Skip to content

anytype 自托管 (alpine)

https://doc.anytype.io/anytype-docs/advanced/data-and-security/self-hosting/self-hosted

先决条件安装工具

https://docs.docker.com/engine/install/ubuntu/

  • 在 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 迁移

  1. 迁移 /var/lib/docker 目录到 alpine 新系统
  1. 将备份好的 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."