內容目錄


(官网截图)

目錄

[toc]

0 在Oracle基地免費架站(大阪)

0.1 免費約定

  • 永久免費算力:提供兩台 1/8 OCPU性能、1GB RAM 的永久免費 x86 虛擬主機(V M)可選用。

  • 永久免費存儲:200GB免費空間。每台VM的引導存儲的要求為50GB以上,所以最多可開啟200/50=4台免費VM。

  • 每月額外免費ARM運行時:提供4個熱門的Ampere ARM OCPU 服務、帶24GB 的RAM。可隨意開一到四台的ARM虛擬主機。

  • 公網IP:四個IPV4地址(3個臨時地址+1個預留地址),IPV6地址是/16的數量。建立VM時可以臨時要新IP,IP有問題時可以更換。在設定IP時可以同時保留到“預留的公共IP”池,重灌VPS時可到“预留的公共IP”取習慣用的舊IP,這樣DNS不必為此修改IP設定。

  • 免費流量:10T/月出站流量,夠佛心的,現在的網速幾乎用不完。。。

  • 其他甲骨文免費資源:除了VM實例,其他甲骨文服務目前我的VPS用不上。

    (官网截图)

甲骨文雲最多提供兩台永久免費x86虛擬機(VM),每台1GRAM,1/8 CPU。另外還有每月贈免費(非永久)使用時數的ARM虛擬機器。免費時數換算後,在目前政策下,相當於 4核/24G RAM 以下的 ARM 虛擬機能持續免費。每月10T免費流量,做普通網站還不錯。

在一個月內無限免費的條件下,可以儘量多做嘗試,找到最適合自己的免費架站規劃。

參考:甲骨文永久免费vps注册和使用简单教程 架站。

0.2 (我的)架站規劃

由於Oracle服務需要綁定信用卡,帳戶在申請時,就必須選定基地位置不能改,而大部分免費資源,只能在基地位置有效所以基地的位置選擇需要慎重些。大陸信用卡似乎審核比較難,台灣信用卡審核無壓力。

離台灣最近的就是日本了,但不是每個Oracle基地都有足夠的架站資源,據說東京就很難申請到,我在大阪申請的是OK的,可以容易的取得ARM和x86資源(2022/10),某些人拿來做日本遊戲服務器的跳板,晚上的網路明顯會壅塞些。

鳳凰城資源保留聽說還可以,就是有點遠,延遲明顯偏長,在亞洲不是好選擇。

服務器規劃,剔除每月贈送的ARM算力,真正永久的兩個x86虛擬機實例還是要用上,1GBR的RAM嫌小,但當小型的網頁服務器是OK的。每月贈送的ARM的4核/24G RAM我想做一些開發實驗,就整合成一台算力較好的VM,存儲就給大一點做實驗吧。

我的設定如下,三台VPS:

  • VM0: arm 4核/24GB 一台,自訂 100GB 存儲,做性能工作用途
  • VM1: x86VM,自訂50GB 存儲,做網站用途,或提供其他服務。
  • VM2: x86VM,自訂50GB 存儲,做網站用途,或當備用VPN。

由於x86VM只有1GB的RAM,1/8 的OCPU,性能普普,跑不動大應用。但當純文字PC、VPN、Wordpress架網站用還不錯,不要跑桌面應用。(聽說可添加SWAP,讓VM跑大型應用,但不想這樣折騰。。。)

ARM 和 x86機器都可安裝免費的Ubuntu或Oracle Linux。(x86還可裝Windows,OS要付費,還需擴容),我選擇常用的Linux安裝。Ubuntu 22.04安裝後, 初始用户是 ubuntu,没密码,使用較安全的ssh key 登入 ssh終端服務。(注意在本地保存好 key,否則會無法登入)

Oracle可保留公網IP,在重建VM時,選用習慣的舊IP,就可以不必動DNS設定了。我把每個VM的公網IP都指向保留的IP,若發現IP被某牆國防火牆阻攔,可以更換IP。

0.3 關於DNS的使用

可以不給DNS,直接用公網IP連服務器,但不直觀,有時會需要更換IP,相應的服務更改會很痛苦。但,DNS的使用需要謹慎。

0.3.1 Freenom.com 免費的最貴。。。

Freenom.com 提供免費DNS申請和DNS服務,申請方便,但免費DNS發現會有很多問題。。。(發現遇到衝突、DNS竄改,跳到欺騙網頁),實驗在Let’s Encrypt下,很有可能無法正確取得/續約證書。。。果然,代表網上身分的域名,還是需要小心奇怪的免費服務商。

0.3.2 Namecheap 我用的域名服務商

之前我在NameCheap申請了兩個付費Name(go2see.co、go2see.me),並在台灣服務器使用。我們可以在Namecheap的DNS添加 A record,建立三個三級子域名,指向Oracle的VM的公網IP來建立VPS。如:

vm0.go2see.me
vm1.go2see.me
vm2.go2see.me

在Namecheap上設定頁是類似這樣的:

0.4 創建 Oracle VM

参考:

創建好VPS實例後,從管理網頁的 運算 — 實例 中,挑選剛建好的實例的詳細信息,修改公網IP為我預留的IP。

在實例頁面的左下角的資源欄,點選 “附加的VNIC”

然後點選 “主要VNIC” 旁連接:

在VNIC頁再點選左下角的 IPv4地址,在到IPv4地址點選右方的彈出選單,選擇編輯彈出頁:

然後選擇“預留的公共IP” — “選擇現有預留IP地址” — 點選擇值,彈出選單選擇想用的預留IP,並更新:

這樣就更換了預留的IP了。。。

1 VM 基礎的初始化設定

我建立了3台虚拟机, arm、vm0、vm1。建立了各自的 ssh 密钥对。在arm可以用terminal软件ssh登入,在linux/macOS可以直接 ssh命令登入。

1.0 第一次登入–使用ssh金鑰和預設帳戶名

ubuntu 22.04服務器的初始化用戶名和密碼都是ubuntu。 oracle的ubuntu在初始化後,預設不讓用密碼登入,只能用建立VM時生成/提供的ssh金鑰登入。之後可以自己改成可用密碼登入。

我在Namecheap功能變數名稱管理服務中,把vm0.go2see. co功能變數名稱綁定到arm虛擬機器的公網IP地址了,所以我可以使用以下命令,採用標準的埠22,登入arm虛擬機器:

ssh  -i ssh-arm.key -p 22 ubuntu@vm0.go2see.co

登入後,就可以開始做一些設定了。 大陸有時候連ssh埠(port 22)都擋,在之後的1.2節會添加一個備用埠。

1.1 步骤:进入root,調整時域

#之後的工作要在 root下做。。。。
sudo -s


# 調整系統時域
dpkg-reconfigure tzdata
# 按'A'後按上下選擇: Asia 然後 按't'後選擇 Taipei。

# (若時間服務異常)可更換時間服務器:
#apt-get install -y ntpdate ntp
#ntpdate time.stdtime.gov.tw

1.2 初始化防火牆、密碼

改用ufw防火牆設置工具,比直接用iptable管理防火牆好用。

Oracle子網域也需要可設定防火牆規則,對網域內機器都有效,需要同步設定規則或關閉他(允許所有連接)。

# 初始化 apt
# apt update && apt upgrade -y
apt update  -y

# 改用 ufw 代替 iptable 关闭 iptable。
ufw disable
ufw reset
ufw default deny
ufw allow ssh
ufw allow http
ufw allow https
ufw allow from any to any port 3389 #RDP
ufw allow from any to any port 8082 #my vpn port
ufw allow 2222 # my 2nd ssh port
ufw enable

# 關閉本機ufw防火牆,直接用 oracle防火牆?
 ufw disable

# 允許 ssh 用密碼登入(no 改 yes),不必一直用 ssh-key(可能影響登入安全):
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config

# 添加帳戶的 ssh 密碼:
passwd ubuntu



  • ssh port 22 有些地方会挡,我提供第二个 ssh 接口:2222。記得Oracle帳戶的防火墙也要打开。。。
## 1. 防火墙打开 2222 端口,注意 Oracle 子网域防火墙也要打开。。。
sudo ufw allow 2222

## 2. 编辑 sshd_config
sudo nano /etc/ssh/sshd_config
### 在文件中添加以下两行,让 sshd 聆听端口 22 和 2222:
Port 22
Port 2222

### 3. 重启 sshd
sudo systemctl restart sshd

1.3 更改主用户名

⚠️注意:更改用主戶名可能造成無法登入,執行前,請確認以下4點已經做了:

# ⚠️需要完全在 root下工作
sudo -s

# ⚠️允許用密碼 ssh(no 改 yes),不必一直用 ssh-key(可能影響登入安全)登入:
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config

# ⚠️要先给 ubuntu 账户加密码,否则更名之後可能无法 sudo 了。。。
passwd ubuntu

開始修改:

cd /

# 改变 /etc 下的 passwd、shadow、group 用户名。可以用 nano 编辑,或 sed 自动修改
  # 账户密码的 户名、全名、工作目录:
  sed -i 's/ubuntu/cyue/g' /etc/passwd
  sed -i 's/Ubuntu/CYUE/g' /etc/passwd
  # shadow的 户名:
  sed -i 's/ubuntu/cyue/g' /etc/shadow
  # 旧帐户加入的群组:
  sed -i 's/ubuntu/cyue/g' /etc/group
  # 工作目录名变换
  mv /home/ubuntu /home/cyue

# nano /etc/sudoers,在root后添加新用户名(以cyue为例),为可以执行 sudo的用户。
    echo 'cyue    ALL=(ALL:ALL) ALL' >> /etc/sudoers


# reboot完成更名!!
  reboot

# 之后 ssh 可以用 cyue + 密码 登入了。。。

1.4 本机免密登入服务器

若近端平时工作的PC上的 ~/.ssh/id_rsa.pub 文件(本机 ssh 公开金钥)不存在,执行 ssh-keygen 建立本机 ssh 用的金钥。(询问问题时可以直接按enter继续)

有ssh 金钥后,执行 ssh-copy-id 把ssh公钥复制到 服务器上:

ssh-copy-id -i ~/.ssh/id_rsa.pub cyue@vm0.go2see.me

执行后,输入账户密码,会把本机的公钥添加到服务器的 cyue 账户的 ~/.ssh/authorized_keys 尾端。这样在 ssh 登入服务器的 cyue 账户时,系统会验证公钥后进入 ssh ,不必再输入密码。


2 按裝網頁服務 LNMP+WP

2.1 安裝 LNMP

Linux適用的通用架站包 – Nginx+MarriaDB+PHP。

LNMP网站的script似乎会有问题,我手动添加NMP,不用LNMP网站脚本。。。

echo
echo '# 1. 安装啟動 nginx'
echo
sudo apt update
sudo apt install nginx lynx -y #lynx是文字模式browser用于terminal中检查网页。
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service
sudo ufw allow 'Nginx Full' # 防火牆打開 nginx
# 需要的話,檢查 nginx 網頁:
# lynx localhost  
# sudo systemctl status nginx.service

echo
echo '# 2. 安装MariaDB'
echo
sudo apt install mariadb-server mariadb-client -y
sudo systemctl stop mariadb.service
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
# 数据库加密保护
sudo mysql_secure_installation
# 需要在此設定資料庫的 root 密碼,禁止遠程登入 root

###檢查數據庫安裝:####
# 1. 登入查看 mariaDB 数据库:
#     sudo mysql -u root -p
# 2. 离开数据库:
#    exit;
####################

echo
echo '# 3. 安装PHP'
echo
sudo apt install php-fpm php-opcache php-cli php-gd php-curl php-mysql -y
### 依據安裝版次修改php設定
# sudo nano /etc/php/8.1/fpm/php.ini
#    參考數值:
#    max_execution_time = 360
#    memory_limit = 256M
#    cgi.fix_pathinfo = 0
#    file_uploads = On
#    upload_max_filesize = 100M
#    allow_url_fopen = On
#    date.timezone = Asia/Taipei


sudo sed -i 's/max_execution_time = 30/max_execution_time = 360/g' /etc/php/8.1/fpm/php.ini 
sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/g' /etc/php/8.1/fpm/php.ini 
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 100M/g' /etc/php/8.1/fpm/php.ini 


sudo systemctl restart nginx.service
sudo systemctl restart php8.1-fpm.service

2.2 安装 WordPress 動態網頁服務

WordPress 是彈性最大的個人架站選擇了,免寫程式、提供豐富的功能外掛支持和外觀風格選擇。

2.2.1 下载 WordPress

从 WordPress TW 网站并下载最新版本,解压并放到 /var/www/

echo
echo 1. 下載安裝 WordPress
echo *** 从 WordPress TW 网站并下载最新版本,解压并放到 /var/www/
cd /tmp && wget https://tw.wordpress.org/latest-zh_TW.tar.gz
tar -zxvf latest-zh_TW.tar.gz
sudo mv wordpress /var/www/wordpress

echo *** 更换 wordpress 目录的用户与权限(使用用户 www-data:www-data, 权限 755 ):
sudo chown -R www-data /var/www/wordpress/
sudo chmod -R 755 /var/www/wordpress/

echo
echo 2. 配置 mariaDB(root 登入 marriaDB)

#接着要设定资料库了。。。
sudo mysql -u root -p

2.2.2 設定網站資料庫

  • 資料庫設置參考:(為 vm0 vm1 vm2 建立資料庫)
# 若有舊的 DB刪除資料庫與帳號
#drop database vm0; 
#drop user uservm0;
#drop database vm1; 
#drop user uservm1;
drop database vm2; 
drop user uservm2;

#建立資料庫與帳戶
### vm0
#CREATE DATABASE vm0;
#CREATE USER 'uservm0'@'localhost' IDENTIFIED BY 'PASSWORD';
#GRANT ALL ON vm0.* TO 'uservm0'@'localhost' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
### vm1
#CREATE DATABASE vm1;
#CREATE USER 'uservm1'@'localhost' IDENTIFIED BY 'PASSWORD';
#GRANT ALL ON vm1.* TO 'uservm1'@'localhost' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
### vm2
CREATE DATABASE vm2;
CREATE USER 'uservm2'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL ON vm2.* TO 'uservm2'@'localhost' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

# 保存设定并退出:
FLUSH PRIVILEGES;
EXIT;

2.2.3 nginx 建立 wordpress 服务器

  • 在nginx建立初始化的 sites-available/wordpress 服务器文件:
# 在nginx建立初始化的 wordpress服务器文件:
sudo nano /etc/nginx/sites-available/wordpress

将内容填入配置文件,把关联的网址名写到 server_name 项目后方:

server {
    root /var/www/wordpress;
    index  index.php index.html index.htm;

    #server_name  vm0.go2see.me vm0.go2see.co; ## 注意 name修改!!
    #server_name  vm1.go2see.me vm1.go2see.co; ## 注意 name修改!!
    server_name  vm2.go2see.me vm2.go2see.co; ## 注意與 DNS 對應名稱!!

    client_max_body_size 100M;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
         include snippets/fastcgi-php.conf;
         fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         include fastcgi_params;
    }

}

  • 编完保存。

2.2.4 启用WordPress服务器

  • 以 ln 建立连接方式将剛建立的文件 worepress 連接到可使用位置。
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
# 重啟 nginx 和 php服務
sudo systemctl restart nginx.service
sudo systemctl restart php8.1-fpm.service

# 這時瀏覽器應該可以看到Wordpress網站安裝畫面了,瀏覽器打開看看:
# http://vm2.go2see.co/wp-admin/setup-config.php

# 在2.4節注意資料庫名、用戶名、密碼、主機位置記得用前面設定的。。。

安裝好先別急著設定,我們在 2.3 節先為網站添加免費的 https證書。

2.3. Certbot 為網站提供免費證書

2.3.1 可以查看certbot官网建议安装方法:

https://certbot.eff.org/lets-encrypt/ubuntufocal-nginx

目前還沒 ubuntu22.04的建議,但可以依照 nginx + ubuntu20.04 的建議安装。

下一(2.3.2)小節用Script完成。

2.3.2 Certbot安裝自動更新證書

# 1. Install snapd
sudo apt update -y
sudo apt install snapd
sudo snap install core; sudo snap refresh core
# 2. remove prev. certbot & install classic
sudo apt-get remove certbot 
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

# 3. 建立網站證書,安装时回答Y或A允许即可。
#  (我有三個網站,注意與DNS服務器匹配)

# sudo certbot --nginx -m cyue12@me.com -d vm0.go2see.co -d vm0.go2see.me
# sudo certbot --nginx -m cyue12@me.com -d vm1.go2see.co -d vm1.go2see.me
sudo certbot --nginx -m cyue12@me.com -d vm2.go2see.co -d vm2.go2see.me

# 4. 看到 Congratulations! 就是證書安裝成功了。。。

# 5. (想要的話)可以手動更新證書
# sudo certbot certonly --nginx -m cyue12@me.com -d vm0.go2see.co -d vm0.go2see.me
# sudo certbot certonly --nginx -m cyue12@me.com -d vm1.go2see.co -d vm1.go2see.me
# sudo certbot certonly --nginx -m cyue12@me.com -d vm2.go2see.co -d vm2.go2see.me

# 6. 開啟自動更新證書
sudo certbot renew --dry-run

# 7. 檢查是否已經開啟了 snap.certbot.renew.timer 更新定時器
sudo systemctl list-timers |grep certbot

2.4 開始設定 WordPress 網頁

瀏覽器打開 vm1.go2see.co,可以開始設定了。。。

  • 第一頁:資料庫名用戶名密碼、記得用前面資料庫設定的。。。

  • 第二頁:內容不和資料庫綁定,可以自己定義。。。。(我懶,先用我的PC帳戶設定)

  • 設定好就可以進入控制台,OK,搞定。。。

2.5 主題推薦(網站)

2.6 上傳文件大小限制

預設 2M,改 200M

sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 200M/g' /etc/php/8.1/cli/php.ini

sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 200M/g' /etc/php/8.1/fpm/php.ini 

sudo systemctl restart nginx.service
sudo systemctl restart php8.1-fpm.service

3. 安裝 OpenVPN 服务

一鍵命令安裝 OpenVPN,在Osaka基地验证成功,
需要更換不被干擾的公網IP,才能在牆國有效的使用。。

3.1. Linux下载安装OpenVPN 服务端 (一键安装命令)

wget https://git.io/vpn -O openvpn-install.sh && sudo bash openvpn-install.sh

Script執行後會問幾個問題,才開始安裝服務,如:

Welcome to this OpenVPN road warrior installer!

Which IPv4 address should be used?
     1) 192.168.5.229
     2) 192.168.5.208
IPv4 address [1]:  # 若虛擬機安裝有多個網卡,會要求選擇網卡。

This server is behind NAT. What is the public IPv4 address or hostname?
Public IPv4 address / hostname [xxx.10.10.61]: my.host.name  # 可用 IP或綁定的域名。             

Which protocol should OpenVPN use?
   1) UDP (recommended)
   2) TCP
Protocol [1]: # 預設選UDP 性能較佳。

What port should OpenVPN listen to?
Port [1194]: 31314 # 選擇一個端口,儘量不要預設的 1194,注意防火牆要先打開此端口。

Select a DNS server for the clients:
   1) Current system resolvers
   2) Google
   3) 1.1.1.1
   4) OpenDNS
   5) Quad9
   6) AdGuard
DNS server [1]: 2 #我選2,預設即可

Enter a name for the first client:
Name [client]: tw0-cyueMBP # 為第一個 Client 機器的設定文件取名字,會被放在 /root/ 下。

安装好以后,通过WinSCP 把ROOT根目录下生成的OpnVPN的配置文件,导出来就可以在客户端上连接使用。

The client configuration is available in: /root/tw0-cyueMBP.ovpn
New clients can be added by running this script again.

⚠️注意:记得需要把 Oracle Cloud 子网路的 ovpn端口(範例给的 31314口)打开。。。

3.2. 添加OpenVPN client 账户法:

OpenVPN 對每個客戶端都需要一個單獨的帳號。执行前面下載的安裝shell,選擇 【1】,就可添加另一台Client 機器帳戶的設定文件名:

sudo bash openvpn-install.sh

配置文件仍然放在 /root 下,放到客戶端app執行安裝。

3.3. 刪除OpenVPN client 账户法:

運行同一個 script命令,選【2】,就會看到帳戶列表,再挑選要刪除的即可。


4. 安装 Code Server,远端网页编程

4.1. 找到资源,安装!!

在网页 打开 https://github.com/coder/code-server/releases ,找到最后版次的机器、系统对应的安装包。
我是 arm 64 CPU 的 ubuntu linux(使用 deb包安装),最新版是v4.8.2需要下载的链接是:

https://github.com/coder/code-server/releases/download/v4.8.2/code-server_4.8.2_arm64.deb

可以进入服务器用 wget下载安装。。。。

4.2. 安装-设定-打开防火墙-后台启动服务:

在服务器的终端进行如下一条龙的安装与设置:(注意 Password 的 XXXXXX改成你想要的)

#### 1. 取得 arm版本的 vscode 包
echo 1. 取得 arm版本的 vscode 包
wget https://github.com/coder/code-server/releases/download/v4.8.2/code-server_4.8.2_arm64.deb

#### 2. 安装此版本的 arm64 CPU的 deb 包
echo 2. 安装此版本的 arm64 CPU的 deb 包
sudo dpkg -i https://github.com/coder/code-server/releases/download/v4.8.2/code-server_4.8.2_arm64.deb

#### 3. 创建 .config/code-server/config.yaml 设定文件,定义密码与远程连接、连接端口
echo 3. 创建 .config/code-server/config.yaml 设定文件,定义密码与远程连接、连接端口(8888):
#### 0.0.0.0:8888 表示可以从任何地址透过 8888 端口访问 code-server
echo bind-addr: 0.0.0.0:8888 > .config/code-server/config.yaml
echo auth: password >> .config/code-server/config.yaml
#### 设定密码为:XXXXXX 
echo password: XXXXXX >> .config/code-server/config.yaml
echo cert: false >> .config/code-server/config.yaml
#### 检查设置:
cat .config/code-server/config.yaml

#### 4. 打开防火墙的 8888 端口。
echo 4. 打开防火墙的 8888 端口。
sudo ufw allow 8888

#### !!此外在 oracle 的子网设定的入站规则也需要打开8888端口。!!
echo !!此外在 oracle 的子网设定的入站规则也需要打开8888端口。!!


#### 5. 在后台启动不停止的 code-server
echo 5. 在后台启动不停止的 code-server
nohup code-server &

4.3. 网页透过 选择的 8888端口连接 code-server:

在浏览器连接我的网站 vm0.go2see.co:8888,即可透过密码连接

4.4. 测试效果:

。。。在牆國常断线,需要重新启动 code-server才能重连。。。


5. 安裝 XRDP服務,提供远端桌面

⚠️不要在只有1GB RAM 的 x86安裝!!系統可能崩潰

5.1 一鍵安裝

# 0. XRDP最好用较新的,更新一下系统吧。。。
sudo apt upgrade -y 

# 1. 安装 X11 + xrdp
sudo apt install -y ubuntu-desktop xrdp 

# 2. 解决RDP登录时反复验证问题
echo "[Allow Wifi Scan]
Identity=unix-user:*
Action=org.freedesktop.NetworkManager.wifi.scan;org.freedesktop.NetworkManager.enable-disable-wifi;org.freedesktop.NetworkManager.settings.modify.own;org.freedesktop.NetworkManager.settings.modify.system;org.freedesktop.NetworkManager.network-control
ResultAny=yes
ResultInactive=yes
ResultActive=yes" | sudo tee /etc/polkit-1/localauthority/50-local.d/47-allow-wifiscan.pkla

# 3. 解决“色彩管理设备” / “color managed device” 弹窗
echo "[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes" | sudo tee /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla

# 4. 解决“刷新系统软件源需要认证” / “refresh the system repositories” 弹窗
echo "[Allow Refresh Repository all Users]
Identity=unix-user:*
Action=org.freedesktop.packagekit.system-sources-refresh
ResultAny=no
ResultInactive=no
ResultActive=yes" | sudo tee /etc/polkit-1/localauthority/50-local.d/46-allow-packagekit.pkla

# 5. 注释掉 `AutomaticLoginEnable` 和 `AutomaticLogin` 变量:
sudo sed -i 's/AutomaticLoginEnable/#AutomaticLoginEnable' /etc/gdm3/custom.conf
sudo sed -i 's/AutomaticLogin/#AutomaticLogin' /etc/gdm3/custom.conf

# 重启RDP服务
sudo systemctl restart xrdp
# 查看 XRDP服务
sudo systemctl status xrdp

6. 【视需要】Wabdav-ubuntu通过nginx搭建webdav服务器

6.1 webdav Info

  WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对[Web Server](https://baike.baidu.com/item/Web Server/9306055)直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制

——来自百度百科https://baike.baidu.com/item/WebDAV

6.2 安装nginx-full

通过nginx搭建webdav服务需要安装http_dav_module模块。nginx-full版本中直接包含了http_dav_module模块。

安装命令:

sudo apt install nginx-full

sudo ufw allow 8081 # 打開防火牆,想用8081端口
sudo mkdir -p /home/webdav
sudo chown -R www-data:www-data /home/webdav

6.3 编辑webdav配置文件

6.3.1 新建webdav.conf配置文件

sudo pico /etc/nginx/conf.d/webdav.conf

6.3.2 写入配置内容

server {
    # 选择服务端口
    listen 8081;
    listen [::]:8081;
    server_name localhost;

    # 认证方式
    auth_basic              realm_name;
    # 存放认证用户名、密码文件(确认有对应权限)
    auth_basic_user_file    /etc/webdav/.credentials.list;
    # webdav服务访问的根目录
    root /home/webdav/;

    # 设置使用utf-8编码,防止中文文件名乱码
    charset utf-8;

    # dav 允许的操作
    dav_methods     PUT DELETE MKCOL COPY MOVE;
    # Allow current scope perform specified DAV method
    dav_ext_methods PROPFIND OPTIONS;

    # In this folder, newly created folder or file is to have specified permission. If none is given, default is user:rw. If all or group permission is specified, user could be skipped
    # 创建文件的三级默认权限,默认user
    dav_access      user:rw group:rw all:r;

    # 临时文件位置
    client_body_temp_path   /tmp/webdav;

    # 最大上传文件限制, 0表示无限制
    client_max_body_size    0;

    # 允许自动创建文件夹(如果有需要的话)
    create_full_put_path    on;
}

6.3.3 测试配置文件

sudo nginx -t

6.4 创建用户登录验证信息(用户名-密码)

sudo mkdir -p /etc/webdav/

sudo echo -n 'root:' | tee -a /etc/webdav/.credentials.list
sudo openssl passwd -apr1 PASSWORD | tee -a /etc/webdav/.credentials.list

sudo echo -n 'cyue:' | tee -a /etc/webdav/.credentials.list
sudo openssl passwd -apr1 PASSWORD | tee -a /etc/webdav/.credentials.list
sudo echo -n 'johnny:' | tee -a /etc/webdav/.credentials.list
sudo openssl passwd -apr1 PASSWORD | tee -a /etc/webdav/.credentials.list
sudo echo -n 'tony:' | tee -a /etc/webdav/.credentials.list
sudo openssl passwd -apr1 PASSWORD | tee -a /etc/webdav/.credentials.list

6.5 重启nginx服务

sudo systemctl restart nginx

查看nginx状态

sudo systemctl status nginx

6.6 nginx重启成功后即可访问webdav服务

http://主机IP:8081

输入配置的用户名和密码验证成功后便可正常进行操作

6.7 扩展

可以搭配frp等内网穿透工具将本地webdav服务暴露,这样就可以将本地主机当做网盘来使用。

手机客户端可使用ES文件浏览器,使用效果良好。

玩法挺多,慢慢探究。

7. 【非必要】安装SFTP服务

Sftp 是 SSH的一部分。可以把SSH和SFTP區分,限制一些客戶只能在服務器上傳下載文件,不能SSH進服務器。

  • sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。

  • sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。

  • 其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统**。 **SFTP本身没有单独的守护进程,它直接使用sshd守护进程(端口号默认是22)来完成相应的连接。

  • SFTP同样用SSH加密传输认证信息和传输的数据,使用SFTP非常安全,但效率比FTP要低得多。

部分 Ubuntu默认只安装openssh-client,需要手动安装openssh-server或者sftp-server。
(甲骨文提供的 Ubuntu22.04目前已安裝 openssh-server)

sudo apt update -y
sudo apt install openssh-server -y

7.1 目标

在Ubuntu系统上开通sftp文件服务,允许某些用户上传及下载文件。

但是这些用户只能使用sftp传输文件,不能使用SSH终端访问服务器,并且sftp不能访问系统文件。

系统管理员则既能使用sftp传输文件,也能使用SSH远程管理服务器。

7.2 操作步骤

7.2.1 sftp用户、用户组的创建

  • 添加sftp用户,创建 sftp 用户组
sudo adduser cyue
sudo adduser johnny
sudo adduser tony
sudo adduser shari

sudo addgroup sftp-users


# 将cyue从所有其他用户组中移除并加入到sftp-users组,并且关闭其Shell访问
#/bin/false也可以替换为/sbin/nologin,目的是不允许该用户登录到系统中
#sudo usermod -G sftp-users -s /bin/false cyue

  • 创建sftp服务器的管理员身份,并且加入 ssh 用户组(不限制他的shell操作权限)
sudo adduser admin
sudo addgroup ssh-users
# -a 表示以追加形式将 admin 加入 ssh-users 
sudo usermod -a -G ssh-users admin

sudo adduser cyue ssh-users
sudo adduser johnny ssh-users
sudo adduser tony ssh-users
sudo adduser shari ssh-users

7.2.2 创建文件服务器目录

  • 创建服务器文件目录
# 创建监狱目录
sudo mkdir /home/sftp_root
# 普通用户能够写入的共享文件目录
sudo mkdir /home/sftp_root/shared
# 设置共享文件夹的拥有者为管理员、用户组为 sftp-users
sudo chown admin:sftp-users /home/sftp_root/shared
# 拥有者、sftp用户组的成员具有一切权限
sudo chmod 770 /home/sftp_root/shared

7.2.3 权限配置(可選)

默认允许所有用户或者用户组登录。再此添加 /etc/ssh/sshd_config,若仅允许指定用户或者用户组访问,按照以下格式配置:

# 以空格间隔
#AllowUsers user1 user2 
#AllowGroups group1 group2 
sudo pico /etc/ssh/sshd_config

在sshd_config文件的最后,添加以下内容:

AllowGroups ssh-users sftp-users
Match Group sftp-users
ChrootDirectory /home/sftp_root
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp

这样配置的目的是:

  • 只允许ssh-uers及sftp-users通过SSH访问系统,其中ssh-uers用户组可以使用ssh,并且不受其他限制。

    而SFTP用户组仅能使用SFTP进行访问,且不能使用shell

  • 针对sftp-users用户,额外增加一些设置:将“/home/sftp_root”设置为该组用户的系统根目录(因此它们将不能访问该目录之外的其他系统文件;

  • 禁止TCP Forwarding和X11 Forwarding

另外需要注意的是:ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。

需要注意的一点的是,现在所有需要远程连接的用户都必须加入 ssh-users 才行。

如将用户 Tony 加入 ,这样ta就可以使用ssh连接本机。

sudo usermod -a -G ssh-users tony
  • 限制ssh连接的访问IP

編輯 /etc/ssh/sshd_config

#sudo pico /etc/ssh/sshd_config

# Authentication:
#AllowUsers root@10.10.10.*        #限制root用户只能通过10.10.10.*网段登录访问
#AllowUsers charles@10.10.10.*        #限制charles用户只能通过10.10.10.*网段登录访问
AllowUsers cyue
AllowUsers tony
AllowUsers johnny
AllowUsers shari


7.2.4 重启SSH

# 亦可
# /etc/init.d/ssh restart
service ssh restart

参考博客

搭建sftp服务器


8 【非必要】Oracle云服务器开启IPv6

登录Oracle后台,前往 网络 -> 虚拟云网络 -> 选择查看网络详情

8.1 修改CIDR块,添加 IPv6块

在网络详情中,点击左侧CIDR块 -> 点击 【添加 IPv6 CIDR块】

8.2 修改子网,设置IPv6

打开子网,编辑子网信息,勾选“启用IPV6 CIDR块”,在输入框随便输入一个十六位值,例如:ee

保存后,IPv6 CIDR块添加成功

8.3 修改路由表,添加路由规则

路由表 -> 路由表详情 -> 添加路由规则:

目标类型:Internet网关

目的地 CIDR 块:::/0 (注意2个冒号)

8.4 修改安全规则

与IPv4相同,修改安全列表 -> 查看详情 -> 添加出站规则 和 添加 入站规则

8.4.1 出站规则:

  • 目的地CIDR ::/0
  • IP协议:所有协议

8.4.2 入站规则:

  • 源 CIDR:::/0
  • ipv4有的规则都添加。

目的地类型:CIDR目的地 CIDR:::/0 (注意2个冒号)

IP协议:所有协议

获取IPv6地址

返回服务器实例详情 -> 附加的 VNIC -> 点击VNIC详情,左侧可见多了一个IPv6地址 的选项!

点击 【分配 IPv6 地址】,即可获得IPv6地址。

8.5 Sshd 允许 ipv6

# 编辑  /etc/ssh/sshd_config ,取消 #AddressFamily 前 ‘#’ 号:
sudo sed -i 's/#AddressFamily/AddressFamily/g' /etc/ssh/sshd_config
# 重启 sshd:
sudo systemctl restart sshd
#netstat -tupln

9 開發環境安裝

9.1 一般開發環境

# compilers
sudo apt install clang gcc cmake python3 python3-tk python3-pip -y

# vscode for many languages
sudo apt install code -y

# Thonny for python
sudo apt install thonny -y

9.2 安装rust

# 1.安装curl
sudo apt install curl -y

# 2.安装rust, 安裝選項選 1. 默認安裝
curl https://sh.rustup.rs -sSf | sh

# 3. 運行rust前的環境變量設定(此指令已經被放在 .bashrc 了,以後登入不必再執行)
source $HOME/.cargo/env

#4.查看版本
rustc -V

10 SNAP Chromium

sudo apt install snap
sudo snap install chromium

A 附录:VPS常用性能测试脚本

wget -qO- bench.sh | bash

看來廣州到大阪線路很差,幾乎不能用。廣州到台北,機器雖老,但傳輸還勉強可用。。。

  • 大阪:
  • 台灣:
最後修改日期: 2023 年 4 月 7 日

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。