Skip to content

Commit 4161860

Browse files
committed
Update blog
1 parent bfd3331 commit 4161860

1 file changed

Lines changed: 78 additions & 7 deletions

File tree

source/_posts/2023-06-17-基于-Proxmox-VE-的-All-in-One-服务器搭建.md

Lines changed: 78 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ tags:
66
categories:
77
- 折腾
88
date: 2023-06-17 19:12:49
9-
updated: 2023-07-11 11:34:22
9+
updated: 2023-07-11 21:12:10
1010
toc: true
1111
thumbnail: /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

Comments
 (0)