ubantuserver相关实用程序安装配置
主机程序安装
cockpit
- 更新系统软件包列表
sudo apt update - 安装 Cockpit
sudo apt install cockpit - 检查 Cockpit 状态
sudo systemctl status cockpit.socket预期输出Active: active (running) - 开放防火墙端口
# 允许 TCP 端口 9090
sudo ufw allow 9090/tcp
# 重新加载 UFW 规则
sudo ufw reload
- 访问 Cockpit
https://<服务器IP地址>:9090登录信息:
- 用户名:使用SSH登录用户名
- 密码:使用该用户的系统密码
- 权限说明:登录Cockpit后可以使用该用户的sudo权限来执行管理任务(例如通过Web终端)
- 若以普通用户
?登录,记得赋予普通用户权限
- 将用户
?添加到 sudo 组sudo usermod -aG sudo ?运行id ?命令确认组成员 - 重启 Cockpit 服务确保权限刷新
sudo systemctl restart cockpit
v2rayA-科学上网
参考文档
https://v2raya.org/docs/prologue/installation/debian/
- 手动安装流程 👇根据arm/X86机型选择下载
v2raya下载
https://github.com/v2rayA/v2rayA/releases
xray核心下载
https://github.com/v2rayA/v2raya-apt/tree/master/pool/main/x/xray
手动安装 deb 包
假如下载的包体放在了服务器/downloads位置
依次执行安装核心与v2raya
执行(为避免权限与沙盒警告不这样安装)sudo apt install /downloads/~.deb
sudo cp /downloads/~.deb /tmp/现将包体复制到/tmp 目录sudo apt install /tmp/~.deb在/tmp目录下依次执行安装核心与v2rayasudo rm /tmp/~.deb移除复制在/tmp目录下的包体
启动 v2rayA / 设置 v2rayA 自动启动
启动 v2rayA
sudo systemctl start v2raya.service
设置开机自动启动
sudo systemctl enable v2raya.service
开放端口2017
sudo ufw allow 2017/tcp
通过2017端口访问web服务
http://localhost:2017
192.168.?.?:2017
Docker / Docker Compose
install
# 更新系统包
sudo apt update && sudo apt upgrade -y
# 安装依赖
sudo apt install -y ca-certificates curl gnupg lsb-release
# 添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 添加 Docker 软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 验证安装
sudo docker --version
Nginx-反代
安装 Nginx
- 1.更新软件包列表
sudo apt update - 2.安装 Nginx
sudo apt install nginx -y - 3.启动并启用 Nginx 服务
# 启动 Nginx sudo systemctl start nginx # 设置开机自启 sudo systemctl enable nginx # 检查运行状态 sudo systemctl status nginx复制代码
基本配置和管理
# 启动 Nginx
sudo systemctl start nginx
# 停止 Nginx
sudo systemctl stop nginx
# 重启 Nginx
sudo systemctl restart nginx
# 重新加载配置(不中断服务)
sudo systemctl reload nginx
# 查看状态
sudo systemctl status nginx
http://服务器IP 显示Nginx默认欢迎页面
Nginx 重要目录和文件
# 主配置文件
/etc/nginx/nginx.conf
# 站点可用配置
/etc/nginx/sites-available/
# 已启用站点配置
/etc/nginx/sites-enabled/
# 默认网站根目录
/var/www/html/
# 日志文件
/var/log/nginx/access.log
/var/log/nginx/error.log
防火墙配置
# 查看可用的应用配置
sudo ufw app list
# 允许 Nginx HTTP
sudo ufw allow 'Nginx HTTP'
# 允许 Nginx HTTPS(如果使用 SSL)
sudo ufw allow 'Nginx HTTPS'
# 或者直接允许端口
sudo ufw allow 80
sudo ufw allow 443
诊断命令
# 检查配置文件语法
sudo nginx -t
# 查看 Nginx 进程
ps aux | grep nginx
# 实时查看访问日志
sudo tail -f /var/log/nginx/access.log
# 实时查看错误日志
sudo tail -f /var/log/nginx/error.log
# 查看监听的端口
sudo netstat -tulpn | grep nginx
示例
创建简单的自定义站点
- 创建网站目录
sudo mkdir -p /var/www/your-domain.com/html - 设置权限
sudo chown -R $USER:$USER /var/www/your-domain.com/htmlsudo chmod -R 755 /var/www/your-domain.com - 创建测试页面
sudo nano /var/www/your-domain.com/html/index.html内容示例:
<html>
<head>
<title>Welcome to Your Domain!</title>
</head>
<body>
<h1>Success! Your Nginx server is working!</h1>
</body>
</html>
- 创建虚拟主机配置
sudo nano /etc/nginx/sites-available/your-domain.com内容示例:
server {
listen 80;
listen [::]:80;
root /var/www/your-domain.com/html;
index index.html index.htm;
server_name your-domain.com www.your-domain.com;
location / {
try_files $uri $uri/ =404;
}
}
- 启用站点
# 创建符号链接
sudo ln -s /etc/nginx/sites-available/your-domain.com /etc/nginx/sites-enabled/
# 测试配置语法
sudo nginx -t
# 重新加载 Nginx
sudo systemctl reload nginx
与现有服务集成
如果将Nginx作为homepage的反向代理:
sudo nano /etc/nginx/sites-available/homepage
添加以下配置:
server {
listen 80;
server_name your-server-ip; # 替换为您的服务器 IP
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
启用配置:
sudo ln -s /etc/nginx/sites-available/homepage /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
docker compose容器
为了让?普通用户能够运行docker compose命令而无需每次输入sudo应该确保?已经是docker组的成员
# 检查 ? 是否在 docker 组中
groups ?
# 如果 docker 不在列表中,执行以下命令添加:
sudo usermod -aG docker ?
# 注意:添加后需要重新登录 SSH 或执行 `newgrp docker` 使其生效
Tailscale-内网穿透异地组网
准备工作:注册账号与生成密钥
首先,你需要一个Tailscale账号和一个认证密钥(Auth Key)。
- 注册Tailscale账号:访问Tailscale官网https://tailscale.com/,使用微软、Google或GitHub等第三方账号注册或登录。
- 生成认证密钥:
- 登录后,进入控制台的 Settings > Personal settings > Keys 页面。
- 点击 Generate auth key。如果需要多个设备使用,务必勾选 "Reusable"(可重复使用)选项。
- 生成后,立即复制并妥善保存这串以 tskey-auth- 开头的密钥。关闭页面后将无法再次查看。
使用 Docker Compose 部署
推荐使用Docker Compose来管理和运行Tailscale容器。
- 创建专用目录:在Wyse 5070上,创建一个目录(如
tailscale-docker)来存放配置文件。 - 创建
docker-compose.yml文件:在该目录下创建docker-compose.yml文件,并写入以下内容。请将TS_AUTHKEY的值替换为你刚才复制的认证密钥,并根据你的本地网络段修改TS_ROUTES
version: '3.8'
services:
tailscale:
container_name: tailscale
image: tailscale/tailscale:latest
hostname: your-wyse5070 # 建议设置一个易于识别的设备名
restart: always
volumes:
- ./tun:/dev/net/tun
- ./lib:/var/lib
environment:
- TS_AUTHKEY=tskey-auth-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- TS_STATE_DIR=/var/lib/tailscale
- TS_ROUTES=192.168.1.0/24 # 请修改为你的Wyse设备所在局域网网段
network_mode: host
cap_add:
- NET_ADMIN
privileged: true
主要配置参数说明
| 参数 | 说明 |
|---|---|
image | 指定 Tailscale 官方 Docker 镜像。 |
volumes | 挂载 tun 设备用于网络隧道;挂载 lib 目录用于持久化Tailscale状态,避免重启后重新认证。 |
environment | TS_AUTHKEY:你的认证密钥,使容器能自动加入你的Tailnet。TS_ROUTES:通告本地子网路由,让Tailnet内其他设备能访问此网段。 |
network_mode: host | 使用宿主机的网络堆栈,这对VPN类服务很重要。 |
cap_add 与 privileged | 赋予容器必要的网络管理权限,例如访问 /dev/net/tun 设备。 |
- 启动容器:在包含
docker-compose.yml文件的目录下,执行以下命令启动Tailscale容器。sudo docker-compose up -d
验证部署与配置控制台
容器运行后,需要确认设备已上线并进行必要配置。
- 验证设备上线:访问 Tailscale 管理后台,在设备列表中查找你的设备(例如
your-wyse5070)。如果状态为 "Connected" 或 "Online",则表示部署成功。 - 启用子网路由(关键步骤):
- 在Tailscale管理后台,找到你的Wyse设备,点击右侧的 "Edit route settings"。
- 在弹出的窗口中,勾选你之前在
TS_ROUTES中设置的局域网网段(例如192.168.1.0/24),然后保存。这样,其他已连入Tailscale网络的设备就能通过Wyse设备访问你整个本地局域网了。
- (可选)禁用密钥过期:在设备设置中,可以考虑关闭默认的密钥过期策略,避免设备因密钥过期而离线。
filebrowser-文件管理器
部署步骤
- 创建部署目录和配置文件
# 创建专用目录
mkdir -p /home/hkj/filebrowser-multi
cd /home/hkj/filebrowser-multi
# 创建docker-compose.yml文件
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
filebrowser:
image: filebrowser/filebrowser:latest
container_name: filebrowser
restart: unless-stopped
ports:
- "8080:80"
volumes:
- /home/hkj:/srv/home
- /mnt/data1/nextcloud/hkj:/srv/data1-hkj
- /mnt/data1/nextcloud/xsl:/srv/data1-xsl
- /mnt/data1/nextcloud/hdc:/srv/data1-hdc
- /mnt/data2/nextcloud:/srv/data2
- /mnt/data3/nextcloud:/srv/data3
- filebrowser-data:/config
environment:
- FILEBROWSER_SERVER_ROOT=/srv
- FILEBROWSER_PORT=80
- FILEBROWSER_BASEURL=/
- FILEBROWSER_ADDRESS=0.0.0.0
- FILEBROWSER_AUTH_METHOD=noauth
- TZ=Asia/Shanghai
networks:
- filebrowser-net
volumes:
filebrowser-data:
networks:
filebrowser-net:
driver: bridge
EOF
- 确保所有挂载目录存在
# 创建所有必要的目录
sudo mkdir -p /mnt/data1/nextcloud/{hkj,xsl,hdc}
sudo mkdir -p /mnt/data2/nextcloud
sudo mkdir -p /mnt/data3/nextcloud
# 设置目录权限(确保FileBrowser可以访问)
sudo chmod -R 755 /mnt/data1/nextcloud/
sudo chmod -R 755 /mnt/data2/nextcloud/
sudo chmod -R 755 /mnt/data3/nextcloud/
sudo chmod -R 755 /home/hkj/
# 检查目录是否存在
ls -la /mnt/data1/nextcloud/
ls -la /mnt/data2/
ls -la /mnt/data3/
- 部署
# 使用docker compose部署
sudo docker compose up -d
# 检查状态
sudo docker compose ps
# 等待几秒让服务完全启动
sleep 10
# 检查容器状态
sudo docker compose ps
# 查看日志
sudo docker compose logs --tail=20
# 测试访问
curl -I http://localhost:8080
echo "访问地址: http://192.168.137.120:8080"
使用说明
成功部署后,您将在FileBrowser中看到以下目录结构:
/srv/
├── home/ # /home/hkj 目录
├── data1-hkj/ # /mnt/data1/nextcloud/hkj
├── data1-xsl/ # /mnt/data1/nextcloud/xsl
├── data1-hdc/ # /mnt/data1/nextcloud/hdc
├── data2/ # /mnt/data2/nextcloud
└── data3/ # /mnt/data3/nextcloud
nextcloud-私有云
version: '3.8'
services:
# ==========================================
# 1. 数据库服务 (MariaDB)
# ==========================================
database:
image: mariadb:10.11
container_name: nextcloud-db
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-read-only-compressed=OFF
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=
- MYSQL_PASSWORD=
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
networks:
- nextcloud-net
# ==========================================
# 2. 缓存服务 (Redis)
# ==========================================
redis:
image: redis:alpine
container_name: nextcloud-redis
restart: unless-stopped
networks:
- nextcloud-net
# ==========================================
# 3. Nextcloud 主程序
# ==========================================
app:
image: nextcloud:latest
container_name: nextcloud-app
restart: unless-stopped
ports:
- "9801:80"
# 强制指定 DNS,解决容器无法联网的问题
dns:
- 223.5.5.5 # 阿里 DNS (国内解析快)
- 1.1.1.1 # Cloudflare DNS (备用)
volumes:
- ./html:/var/www/html
- /mnt/data1/nextcloud:/external/data1
- /mnt/data2/nextcloud:/external/data2
- /mnt/data3/nextcloud:/external/data3
- /etc/localtime:/etc/localtime:ro
environment:
- MYSQL_HOST=database
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=
- MYSQL_DATABASE=nextcloud
- REDIS_HOST=redis
- NEXTCLOUD_TRUSTED_DOMAINS=
- PHP_MEMORY_LIMIT=2048M
- PHP_UPLOAD_LIMIT=500G
- PHP_MAX_EXECUTION_TIME=3600
- PHP_MAX_INPUT_TIME=3600
- PHP_POST_MAX_SIZE=500G
depends_on:
- database
- redis
networks:
- nextcloud-net
networks:
nextcloud-net:
driver: bridge
