Appearance
anytype 自托管 (alpine)
https://doc.anytype.io/anytype-docs/advanced/data-and-security/self-hosting/self-hosted
先决条件安装工具
- 在 PVE 安装 alpine CPU 类别建议选择 host
# 检查是否支持 avx 指令集
cat /proc/cpuinfo | grep avx
安装 alpine
- 根据提示安装系统
setup-alpine
安装系统时候选择 sys
- 修改 IP
shell
localhost:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.5.9
netmask 255.255.255.0
gateway 192.168.5.8
- 添加 docker 挂载硬盘
# 手动添加 128G 硬盘
Disk /dev/xvdb: 128 GB, 137438953472 bytes, 268435456 sectors
16709 cylinders, 255 heads, 63 sectors/track
Units: sectors of 1 * 512 = 512 bytes
- 挂载硬盘
mkdir -p /var/lib/docker
mkfs.ext4 /dev/xvdb
# blkid /dev/xvdb
/dev/xvdb: UUID="1cb0d2cd-333f-47f1-8006-60b55ddf5371" BLOCK_SIZE="4096" TYPE="ext4"
vi /etc/fstab
UUID=1cb0d2cd-333f-47f1-8006-60b55ddf5371 /var/lib/docker ext4 defaults 0 0
安装 docker
shell
echo "http://dl-cdn.alpinelinux.org/alpine/latest-stable/community" >>/etc/apk/repositories
apk update
apk add curl git make docker docker-compose
部署 anytype 自托管
- 部署 any-sync-dockercompose
shell
git clone https://github.com/anyproto/any-sync-dockercompose.git
cd any-sync-dockercompose/
echo 'EXTERNAL_LISTEN_HOSTS=192.168.5.9' >> .env.override
rc-update add docker boot
reboot
make start
- 获取配置文件
localhost:~/any-sync-dockercompose/etc# cat client.yml
any-sync-dockercompose 迁移
- 迁移
/var/lib/docker
目录到alpine
新系统
将备份好的
any-sync-dockercompose.tar.gz
上传到alpine
新系统
cd /opt/any-sync-dockercompose
make start
docker-compose up -d
日志清理
- 查看日志
# 查看日志
docker logs -f any-sync-dockercompose-any-sync-node-1-1 638e20b65528
docker logs -f any-sync-dockercompose-any-sync-filenode-1 45bd6622321b
docker logs -f any-sync-dockercompose-any-sync-coordinator-1 4d7d2b90346e
# 查看哪些容器日志占空间最多
du -sh /var/lib/docker/containers/*/*-json.log | sort -hr | head
- 清理日志脚本
shell
#!/bin/bash
echo "🧹 Starting Docker container logs cleanup..."
# 获取所有正在运行的容器 ID
CONTAINERS=$(docker ps -q)
if [ -z "$CONTAINERS" ]; then
echo "⚠️ No running containers found. Nothing to do."
exit 0
fi
for CONTAINER in $CONTAINERS; do
LOG_FILE=$(docker inspect --format='{{.LogPath}}' "$CONTAINER")
if [ -f "$LOG_FILE" ]; then
echo "🧹 Clearing log for container $CONTAINER at $LOG_FILE"
truncate -s 0 "$LOG_FILE"
else
echo "❌ Log file not found for container $CONTAINER"
fi
done
echo "✅ All container logs cleaned successfully."