twikoo评论系统阿里云服务器docker部署手册

本文详细介绍了在阿里云云主机上,从docker/git环境安装开始,编译twikoo docker镜像,通过docker compose启动twikoo服务,并通过nginx对外暴露服务的完整过程。

阿里云服务器安装docker环境

参照阿里云官方教程:在Linux上安装Docker和Docker Compose_云服务器 ECS(ECS)-阿里云帮助中心

进行安装,使用命令行的方式进行安装。

卸载旧版本的Docker

1
2
3
4
5
6
7
8
9
10
#删除Docker相关源
sudo rm -f /etc/yum.repos.d/docker*.repo
#卸载Docker和相关的软件包
sudo dnf -y remove \
docker-ce \
containerd.io \
docker-ce-rootless-extras \
docker-buildx-plugin \
docker-ce-cli \
docker-compose-plugin

安装Docker社区版本

1
2
3
4
5
6
7
#添加Docker软件包源
sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo
#Alibaba Cloud Linux3专用的dnf源兼容插件
sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
#安装Docker社区版本,容器运行时containerd.io,以及Docker构建和Compose插件
sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

该步骤已经安装好docker-compose

启动Docker并设置开机自启

1
2
3
4
#启动Docker
sudo systemctl start docker
#设置Docker守护进程在系统启动时自动启动
sudo systemctl enable docker

检查docker是否安装正常

1
docker -v

docker-v

配置阿里云专属镜像源

  1. 登录容器镜像服务控制台,在左侧导航栏选择****镜像工具** > *镜像加速器*,在镜像加速器页面获取加速器地址**。
  2. 编辑Docker配置文件/etc/docker/daemon.json。若文件不存在,先创建。
  3. 重启docker服务
1
2
3
4
5
6
7
8
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["<加速器地址>"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

采用docker-compose的方式安装twikoo

其实这一步才开始安装twikoo,上面的步骤是在阿里云主机中准备docker运行环境,每个环境不同,只需要依据环境进行准备即可。

参考twikoo官网文档进行安装:云函数部署 | Twikoo 文档

安装依赖环境

1
2
# 安装git和nodejs环境
yum install git

安装git是为了拉取代码

安装nodejs,此处其实使用不到,顺手安装后面

获取twikoo代码并编译镜像文件

1
2
3
4
5
# 拉取代码
git clone https://github.com/twikoojs/twikoo.git
cd twikoo
# 编译docker 镜像
docker build . -t imaegoo/twikoo:latest

查看编译好的镜像

1
docker images

1759687546996

编辑docker-compose.yml文件

在项目更目录下,存在一个docker-compose.yml配置文件,主要修改volumes./data:/app/data,将容器内文件夹/app/data同步到当前文件夹./data下。做到评论数据持久化。

1
2
3
4
5
6
7
8
9
10
11
12
version: '3'
services:
twikoo:
image: imaegoo/twikoo
container_name: twikoo
restart: unless-stopped
ports:
- 8080:8080
environment:
TWIKOO_THROTTLE: 1000
volumes:
- ./data:/app/data

启动服务后,在当前文件夹下

docker compose启动服务

1
2
3
4
# 进入到代码目录下
cd twikoo
# 后台启动服务
docker compose up -d

1759687967324

测试服务是否完成启动

1
2
# 直接在命令行探测服务端口
curl http://localhost:8080

如果可以向下面这样正常输出说明服务启动正常

1759688032175

将服务暴露公网

截至目前,服务已经在服务器内部可以正常访问了,对外还不能提供服务。下一步需要将服务暴露在公网上,然后在配置前端部分。

放开服务器端口

配置服务器安全组,放开必要的端口,可以放开下面几个端口

1759689536452

放开上述端口后,使用公网IP(http://<公网IP>:8080),就可以访问启动的twikoo服务

如果要使用域名访问该服务,还需要通过nginx转发,同时为nginx配置一个公网暴露的端口,此处,在你测试完8080端口后,可以取消该端口暴露,使用其他如8081端口,通过域名访问(https://.com:8081)

安装nginx

1
yum install -y nginx

禁用默认站点nginx

可以参考阿里云官方帮助文档进行配置:Nginx服务配置多站点_云服务器 ECS(ECS)-阿里云帮助中心

通过yum安装的nginx 配置文件在/etc/nginx目录下,默认配置文件为nginx.conf

1
2
cd /etc/nginx
cat nginx.conf

注释掉该文件中默认放开的80服务,所有站点通过自己配置文件进行配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
worker_connections 1024;
}

http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;

include /etc/nginx/mime.types;
default_type application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;

# server {
# listen 80;
# listen [::]:80;
# server_name _;
#
#
# return 301 https://$host$request_uri;

# root /usr/share/nginx/html;

# Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;

# error_page 404 /404.html;
# location = /40x.html {
# }

# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }

# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2;
# listen [::]:443 ssl http2;
# server_name _;
# root /usr/share/nginx/html;
#
# ssl_certificate "/etc/pki/nginx/server.crt";
# ssl_certificate_key "/etc/pki/nginx/private/server.key";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers PROFILE=SYSTEM;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }

}

新增站点nginx配置

新增配置文件/etc/nginx/conf.d/blog.conf。下面是https服务的配置信息。配置完成后可以通过:

  • https://.com:8081 访问twikoo服务
  • https://.com 访问博客主站点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 自定义站点配置

# 代理twikoo评论服务
server {
listen 8081 ssl;
listen [::]:8081 ssl;
server_name <your host name>;

ssl_certificate "/etc/nginx/ssl/ssl.pem";
ssl_certificate_key "/etc/nginx/ssl/ssl.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;


location / {
proxy_pass http://127.0.0.1:8080;

}
}

server {
listen 443 ssl;
listen [::]:443 ssl;
server_name <your host name>;
# 配置博客内容根目录
root /usr/share/nginx/html/blog;

ssl_certificate "/etc/nginx/ssl/ssl.pem";
ssl_certificate_key "/etc/nginx/ssl/ssl.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

为何可以通过在conf.d目录中新增conf配置文件来配置站点,是因为在nginx.conf配置文件中存在include /etc/nginx/conf.d/*.conf引用其他配置文件的配置。

上述配置中,省略了获取ssl证书/域名申请备案等步骤。

twikoo客户端配置

配置icarus配置文件

配置_config.icarus.yml配置文件,修改信息如下:

1
2
3
4
comment:
type: twikoo
# 配置环境地址,私有化部署,配置服务器地址
env_id: https://blog.plcent.com:8099/

自此配置完成,可以重启本地服务查看效果。

首次使用设置管理员密码

首次使用twikoo时,请设置一个服务管理密码。在每个文章下面看到评论区,在评论区的右边发现有一个「蓝色小齿轮」,这就是管理面板。

第一次 点击小齿轮后会让你输入登录密码,请记住它,如果忘记了密码,请参考官网文档解决。

补充信息

停止docker compose服务

1
2
3
4
# 进入到代码目录下
cd twikoo
# 停止服务
docker compose down

参考资料

twikoo评论系统阿里云服务器docker部署手册

https://blog.plcent.com/2025/10/05/hexo-icarus-twikoo-deploy/

作者

Nolly

发布于

2025-10-05

更新于

2025-10-08

许可协议

评论