66categories :
77 - 折腾
88date : 2023-06-17 19:12:49
9- updated : 2023-07-11 11:34:22
9+ updated : 2023-07-11 21:12:10
1010toc : true
1111thumbnail : /2023/06/17/基于-Proxmox-VE-的-All-in-One-服务器搭建/proxmox-logo.svg
1212---
@@ -94,11 +94,29 @@ thumbnail: /2023/06/17/基于-Proxmox-VE-的-All-in-One-服务器搭建/proxmox-
9494 public = yes
9595 guest ok = yes
9696
97+ [PT]
98+ path = /data/PT
99+ writeable = yes
100+ create mask = 0644
101+ directory mask = 1755
102+ public = yes
103+ guest ok = yes
104+
97105[Private]
98106 path = /data/Private
99107 writeable = yes
100- create mask = 0744
101- directory mask = 1744
108+ create mask = 0644
109+ directory mask = 1755
110+ public = no
111+ guest ok = no
112+ valid users = thx
113+ browseable = yes
114+
115+ [Sync]
116+ path = /data/Sync
117+ writeable = yes
118+ create mask = 0644
119+ directory mask = 1755
102120 public = no
103121 guest ok = no
104122 valid users = thx
@@ -107,7 +125,9 @@ thumbnail: /2023/06/17/基于-Proxmox-VE-的-All-in-One-服务器搭建/proxmox-
107125
108126其中 ` /data/RaspCloud ` 为公开共享目录,内部有 ` read-only ` 目录通过改变目录所有者来限制 guest 的写入。
109127
110- ` /data/Private ` 为私密目录,使用白名单限制访问用户。
128+ ` /data/PT ` 为公开只读共享目录。
129+
130+ ` /data/Private ` 和 ` /data/Sync ` 为私密目录,使用白名单限制访问用户。
111131
112132如果需要在共享目录中软链接到系统里的其它目录中,则需要在 ` [global] ` 段中添加:
113133
@@ -732,6 +752,33 @@ opkg install luci-i18n-wireguard-zh-cn
732752
733753默认下终端可能会有乱码,需要配置 UTF-8 语言,` sudo dpkg-reconfigure locales ` 然后选中 ` en_US.UTF-8 ` 即可。
734754
755+ ### 配置 UID / GID 映射
756+
757+ 如果直接挂载目录共享的话,容器内外会视为不同的用户,导致共享文件时有着麻烦的权限问题。不过我们可以通过 ` lxc.idmap ` 来将某一容器中的某些用户映射到 Host 中的某些用户。
758+
759+ 参考:
760+
761+ - < https://kcore.org/2022/02/05/lxc-subuid-subgid/ >
762+ - < https://pve.proxmox.com/wiki/Unprivileged_LXC_containers >
763+ - < https://itsembedded.com/sysadmin/proxmox_bind_unprivileged_lxc/ >
764+
765+ 以下以映射 102 容器中的 1000 用户为 Host 中的 1000 用户为例:
766+
767+ 先在 ` /etc/subuid ` 和 ` /etc/subgid ` 中都添加上 ` root:1000:1 ` ,来允许 root 创建到 1000 用户的映射。
768+
769+ 然后在 ` /etc/pve/lxc/102.conf ` 的配置文件中,添加如下内容:
770+
771+ ``` conf /etc/pve/lxc/102.conf
772+ lxc.idmap: u 0 100000 1000
773+ lxc.idmap: g 0 100000 1000
774+ lxc.idmap: u 1000 1000 1
775+ lxc.idmap: g 1000 1000 1
776+ lxc.idmap: u 1001 101000 64535
777+ lxc.idmap: g 1001 101000 64535
778+ ```
779+
780+ 建议将原来容器内 1000 映射到的 101000 用户还包含在映射范围内,这样容器内的 root 才能够将文件的所有权从原先的转到现在的。
781+
735782### 安装 Docker
736783
737784由于并不想在 PVE 中直接装 Docker,故在 Debian 虚拟机中安装 Docker。
@@ -809,8 +856,9 @@ services:
809856 - HOST_WHITELIST= #optional
810857 volumes:
811858 - /home/thx/Service/transmission/config:/config
812- - /data/RaspCloud/read-only/PT:/downloads
813- - /data/RaspCloud/read-only/PT/torrentwatch:/watch
859+ - /data/PT:/downloads
860+ - /data/PT/torrentwatch:/watch
861+ - /mnt:/mnt
814862 ports:
815863 - 9091:9091
816864 - 51413:51413
@@ -823,7 +871,7 @@ networks:
823871 enable_ipv6: true
824872 ipam:
825873 config:
826- - subnet: 2001:0DB8::/112
874+ - subnet: 2001:0DB8:1: :/112
827875` ` `
828876
829877其中 UID / GID 可以参考 `id $user` 的结果设置。
@@ -1000,3 +1048,26 @@ sudo apt install adoptopenjdk-8-hotspot-jre
10001048` ` `
10011049
10021050# ### 添加为服务
1051+
1052+ 添加为 systemd 服务,参考 <https://gist.github.com/winny-/bb17853ffc76fbb9b039> 进行修改。
1053+
1054+ ` ` ` ini /etc/systemd/system/minecraft.service
1055+ [Unit]
1056+ Description=Minecraft Server
1057+
1058+ [Service]
1059+ WorkingDirectory=/data/MC/RAD2-1.3/RAD2-Serverpack-1.3
1060+ User=thx
1061+ Type=forking
1062+ ExitType=cgroup
1063+ ExecStart=/usr/bin/tmux new-session -s mc -d './LaunchServer.sh'
1064+ ExecStop=/usr/bin/tmux send-keys -t mc:0.0 'say SERVER SHUTTING DOWN. Saving map...' C-m 'save-all' C-m 'stop' C-m
1065+ ExecStop=/bin/sleep 2
1066+
1067+ [Install]
1068+ WantedBy=multi-user.target
1069+ ` ` `
1070+
1071+ 使用 `Type=forking` 来管理 `tmux new-session` fork 出的进程。
1072+
1073+ 使用 `ExitType=cgroup` 等待所有程序退出。
0 commit comments