docker-compose.yml,它直接拉取 milesmcc/shynet:latest 镜像

# 1. 在服务器上创建目录并进入
mkdir -p /opt/shynet && cd /opt/shynet

# 直接从 GitHub 下载3个文件
wget https://raw.githubusercontent.com/milesmcc/shynet/master/docker-compose.yml
wget https://raw.githubusercontent.com/milesmcc/shynet/master/nginx.conf
wget https://raw.githubusercontent.com/milesmcc/shynet/master/TEMPLATE.env

# 复制并配置
cp TEMPLATE.env .env

# 生成密钥并写入
SECRET=$(python3 -c "import secrets; print(secrets.token_urlsafe())")
sed -i "s|DJANGO_SECRET_KEY=random_string|DJANGO_SECRET_KEY=$SECRET|" .env

# 修改以下3项(把 你的密码 / 你的IP替换成实际值)
sed -i "s|DB_PASSWORD=shynet_db_user_password|DB_PASSWORD=你的密码|" .env
sed -i "s|ALLOWED_HOSTS=example.com|ALLOWED_HOSTS=你的IP或域名|" .env
sed -i "s|CSRF_TRUSTED_ORIGINS=https://example.com|CSRF_TRUSTED_ORIGINS=http://你的IP或域名|" .env

# 确认配置正确
grep -E "SECRET_KEY|DB_PASSWORD|ALLOWED_HOSTS|CSRF" .env

# 启动
docker compose up -d

卸载项目

cd /opt/shynet

# 停止并删除容器、网络
docker compose down

# 同时删除数据库数据卷(不可恢复,谨慎)
docker compose down -v

# 删除项目文件
rm -rf /opt/shynet

# 删除下载的镜像(可选)
docker rmi milesmcc/shynet:latest nginx postgres

注意:down -v 会删除 PostgreSQL 数据卷,所有数据将永久丢失。如果只是停止服务但保留数据,用 docker compose down(不加 -v)

遇到问题: 拉取的 postgres 镜像是最新的 18版本,但数据卷是旧格式(17以前),两者不兼容。
解决方法:删除旧数据卷,并将 postgres 固定为稳定版本 16:

# 停止并删除容器和数据卷
docker compose down -v

# 修改 docker-compose.yml,将 postgres 镜像固定为 16
sed -i 's/image: postgres$/image: postgres:16/' docker-compose.yml

# 确认修改
grep 'image: postgres' docker-compose.yml

# 重新启动
docker compose up -d

# 等待约30秒后:
docker compose ps

# 三个容器全部 Up 后再创建管理员:
docker exec -it shynet_main python manage.py createsuperuser

创建完管理员后访问 http://ip:8080 即可登录

声明:未经同意禁止任何个人或组织复制、盗用、采集、发布本站点内容到其他媒体平台。