单服务器部署CTFd+whale踩坑

单服务器部署CTFd+whale踩坑

环境:

os: ubuntu16

Docker: Version: 20.10.7

Docker-compose: version v2.12.1

参考:

https://www.zhaoj.in/read-6333.html/comment-page-1#_Direct_Frp

详细步骤:

创建集群:

docker swarm init --advertise-addr $your_machine_ip

标记节点:

docker node ls #检查节点 ID
docker node update --label-add name=linux-1 <节点 ID>

one step:
docker node update --label-add name=linux-1 $(docker node ls -q)

下载代码:

git clone -b single https://github.com/glzjin/CTFd.git

配置:

cd CTFd
vi frp/frps.ini # token 一定要随机
vi frp/frpc.ini # token 一定要随机
#(这个token我没改,最后成功搭起来了,不知道赵总的随机是啥意思)
git submodule update --init
docker-compose up -d

docker-compose up -d开始踩坑了,一开始先是报错是找不到python和python-dev,这个改Dockerfile就好

python  ->  python3
python-dev  ->  python3-dev

然后docker-compose up -d还是报错,如下:

Error response from daemon: Could not attach to network ctfd_frp_containers: rpc error: code = PermissionDenied desc = network ctfd_frp_containers not manually attachable

上网查了查,要加上--attachable参数来启动network,要先删除这个network再启动一次,命令如下:

docker network rm ctfd_frp_containers
docker network create --driver overlay --attachable ctfd_frp_containers

接下来再执行docker-compose up -d,第3+n个坑出现了,ctfd容器死活起不来,一直restarting,但是可能不同的操作系统坑不同,所以以下报错也可能不会出现在其他版本的操作系统上,docker logs $容器id或者名字查看报错

1.
ImportError: cannot import name 'escape' from 'jinja2' (/usr/local/lib/python3.7/site-packages/jinja2/__init__.py)
2.
ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/usr/local/lib/python3.7/site-packages/markupsafe/__init__.py)
3.
ValueError: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 144 from C header, got 40 from PyObject

调试过程过于繁琐,就不详细写了,查询报错原因发现主要是pip下载库版本有问题,然后对照官方的git仓库来修改赵总git里的requirements.txt,加了几个库最后就可以成功起ctfd容器了,最终requirements.txt如下:

Flask==1.1.2
Werkzeug==0.16.0
Flask-SQLAlchemy==2.4.1
Flask-Caching==1.4.0
Flask-Migrate==2.5.2
Flask-Script==2.0.6
SQLAlchemy==1.3.11
SQLAlchemy-Utils==0.36.0
passlib==1.7.2
bcrypt==3.1.7
six==1.13.0
itsdangerous==1.1.0
jinja2==2.11.3
requests>=2.20.0
PyMySQL==0.9.3
gunicorn==19.9.0
normality==2.0.0
dataset==1.1.2
mistune==0.8.4
netaddr==0.7.19
redis==3.3.11
datafreeze==0.1.0
gevent==21.12.0
python-dotenv==0.10.3
flask-restplus==0.13.0
pathlib2==2.3.5
flask-marshmallow==0.10.1
marshmallow-sqlalchemy==0.17.0
boto3==1.10.39
markupsafe==1.1.1
marshmallow==2.20.2

记得先把container和images删了再重新运行docker-compose up -d,不然还是运行不了,然后就照着赵总博客设置就行,本文主要介绍搭建时遇到的问题,搭建操作详情见赵总的博客或者其他师傅的博客。

posted @ 2022-11-12 23:07  Fr3Nky  阅读(472)  评论(0编辑  收藏  举报