Tachidesk Server

一个免费且开源的漫画阅读服务,运行为 Tachiyomi 构建的扩展。


Docker Run

创建容器并运行

1
docker run -itd -p 4567:4567 --name tachidesk-server rahn2029/tachidesk-server:2.0

停止容器并删除

1
docker stop tachidesk-server && docker rm tachidesk-server

查看容器日志

1
docker logs tachidesk-server

Docker Compose

官方版本的 docker-compose.yaml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
---
version: '3.7'
services:
suwayomi:
image: tachidesk:new
environment:
- TZ=Etc/UTC # Use TZ database name from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
- DEBUG=true
- BIND_IP=0.0.0.0
- BIND_PORT=4567
- SOCKS_PROXY_ENABLED=false
- DOWNLOAD_AS_CBZ=true
- MAX_PARALLEL_UPDATE=3
- BASIC_AUTH_ENABLED=true
- BASIC_AUTH_USERNAME=manga
- BASIC_AUTH_PASSWORD=hello123
volumes:
- ./data:/home/suwayomi/.local/share/Tachidesk
ports:
- "4567:4567"
restart: on-failure:3
  1. 要将数据挂载进行保存,需要将容器内部的文件复制到当前位置的 data 目录下
  2. 添加权限,如果没有权限,文件夹会被拒绝访问,发生错误
  3. 停止容器并删除
  4. 使用 docker-compose 进行管理
1
2
3
4
5
6
7
8
9
10
mkdir -p /root/docker/Tachidesk-Server
cd /root/docker/Tachidesk-Server

docker run -itd -p 4567:4567 --name tachidesk-server ghcr.io/suwayomi/tachidesk:stable

docker cp tachidesk-server:/home/suwayomi/.local/share/Tachidesk $(pwd)/data

chmod -R 777 data

docker stop tachidesk-server && docker rm tachidesk-server

创建 docker-compose.yaml 文件

1
nano docker-compose.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
---
version: "2.1"
services:
suwayomi:
image: ghcr.io/suwayomi/tachidesk:stable
container_name: tachidesk-server
environment:
- TZ=Asia/Shanghai
volumes:
- ./data:/home/suwayomi/.local/share/Tachidesk
ports:
- 4567:4567
restart: unless-stopped
1
docker-compose up -d

个人版本的 docker-compose.yaml 文件

不再需要设置权限,启动更快

1
2
3
4
5
6
7
8
mkdir -p /root/docker/Tachidesk-Server
cd /root/docker/Tachidesk-Server

docker run -d -p 4567:4567 --name tachidesk-server rahn2029/tachidesk-server:2.0

docker cp tachidesk-server:/root/.local/share/Tachidesk $(pwd)/data

docker stop tachidesk-server && docker rm tachidesk-server

创建 docker-compose.yaml 文件

1
nano docker-compose.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
---
version: "2.1"
services:
suwayomi:
image: rahn2029/tachidesk-server:2.0
container_name: tachidesk-server
environment:
- TZ=Asia/Shanghai
volumes:
- ./data:/root/.local/share/Tachidesk
ports:
- 4567:4567
restart: unless-stopped
1
docker-compose up -d

环境变量

官方版本的环境变量

变量 默认值 描述
TZ Etc/UTC 容器时区
BIND_IP 0.0.0.0 容器内监听的 IP
BIND_PORT 4567 Suwayomi 将监听的端口
SOCKS_PROXY_ENABLED false Suwayomi 是否将通过 SOCKS5 代理连接
SOCKS_PROXY_HOST "" SOCKS5 代理的 TCP 主机
SOCKS_PROXY_PORT "" SOCKS5 代理的端口
DOWNLOAD_AS_CBZ false Suwayomi 是否应将漫画以 CBZ 格式保存到磁盘
MAX_PARALLEL_UPDATE 10 可以同时更新多少个源
BASIC_AUTH_ENABLED false Suwayomi 是否需要 HTTP Basic Auth 才能进入
BASIC_AUTH_USERNAME "" 登录 Suwayomi 的用户名
BASIC_AUTH_PASSWORD "" 登录 Suwayomi 的密码
DEBUG true 如果启用了额外的日志记录

DockerFile

官方版本的 DockerFile 文件

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
FROM eclipse-temurin:11-jre-jammy

ARG BUILD_DATE
ARG TACHIDESK_RELEASE_TAG
ARG TACHIDESK_FILENAME
ARG TACHIDESK_RELEASE_DOWNLOAD_URL
ARG TACHIDESK_DOCKER_GIT_COMMIT

LABEL maintainer="suwayomi" \
org.opencontainers.image.title="Suwayomi Docker" \
org.opencontainers.image.authors="https://github.com/suwayomi" \
org.opencontainers.image.url="https://github.com/suwayomi/docker-tachidesk/pkgs/container/tachidesk" \
org.opencontainers.image.source="https://github.com/suwayomi/docker-tachidesk" \
org.opencontainers.image.description="This image is used to start suwayomi server in a container" \
org.opencontainers.image.vendor="suwayomi" \
org.opencontainers.image.created=$BUILD_DATE \
org.opencontainers.image.version=$TACHIDESK_RELEASE_TAG \
tachidesk.docker_commit=$TACHIDESK_DOCKER_GIT_COMMIT \
tachidesk.release_tag=$TACHIDESK_RELEASE_TAG \
tachidesk.filename=$TACHIDESK_FILENAME \
download_url=$TACHIDESK_RELEASE_DOWNLOAD_URL \
org.opencontainers.image.licenses="MPL-2.0"

# Install envsubst from GNU's gettext project
RUN apt-get update && \
apt-get -y install gettext-base && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

# Create a user to run as
RUN groupadd --gid 1000 suwayomi && \
useradd --uid 1000 --gid suwayomi --no-log-init suwayomi && \
mkdir -p /home/suwayomi && \
chown -R suwayomi:suwayomi /home/suwayomi
USER suwayomi
WORKDIR /home/suwayomi

# Copy the app into the container
RUN curl -s --create-dirs -L $TACHIDESK_RELEASE_DOWNLOAD_URL -o /home/suwayomi/startup/tachidesk_latest.jar
COPY scripts/startup_script.sh /home/suwayomi/startup_script.sh
COPY server.conf.template /home/suwayomi/server.conf.template

EXPOSE 4567
CMD ["/bin/sh", "/home/suwayomi/startup_script.sh"]

# vim: set ft=dockerfile:

个人版本的 DockerFile 文件

1
wget https://github.com/Suwayomi/Tachidesk-Server/releases/download/v0.7.0/Tachidesk-Server-v0.7.0-r1197.jar
1
2
3
4
5
6
7
8
9
FROM eclipse-temurin:11-jre-jammy

WORKDIR /root
VOLUME /root/.local/share/Tachidesk

COPY Tachidesk-Server-v0.7.0-r1197.jar /root/Tachidesk-Server-v0.7.0-r1197.jar

EXPOSE 4567
CMD ["java", "-jar", "Tachidesk-Server-v0.7.0-r1197.jar"]
1
docker build -f DockerFile -t rahn2029/tachidesk-server:2.0 .

一键脚本

官方版本

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
#! /bin/bash

red(){
echo -e "\033[31m\033[01m$1\033[0m"
}
green(){
echo -e "\033[32m\033[01m$1\033[0m"
}
yellow(){
echo -e "\033[33m\033[01m$1\033[0m"
}


# Tachidesk Server

function tachidesk-server_install(){
if nc -z localhost 4567; then
green " 4567 端口已经被占用,请检查相关进程"
exit 1
fi
if docker ps -a --format "{{.Names}}" | grep -q "tachidesk-server"; then
green " tachidesk-server 容器名已经被占用"
exit 1
fi
if [ ! -d /root/docker/Tachidesk-Server ]; then
mkdir -p /root/docker/Tachidesk-Server
fi
cd /root/docker/Tachidesk-Server
if [ -d "data" ]; then
chmod -R 777 data
echo
green " data 文件夹已经存在, 跳过执行 docker cp 命令"
else
docker run -itd -p 4567:4567 --name tachidesk-server rahn2029/tachidesk-server:1.0
docker cp tachidesk-server:/home/suwayomi/.local/share/Tachidesk $(pwd)/data
chmod -R 777 data
docker stop tachidesk-server && docker rm tachidesk-server
fi
if [ -f "docker-compose.yaml" ] || [ -f "docker-compose.yml" ]; then
echo
green " docker-compose 文件已经存在, 跳过创建 docker-compose.yaml 步骤"
echo
else
cat <<EOF > docker-compose.yaml
---
version: "2.1"
services:
suwayomi:
image: rahn2029/tachidesk-server:1.0
container_name: tachidesk-server
environment:
- TZ=Asia/Shanghai
volumes:
- ./data:/./home/suwayomi/.local/share/Tachidesk
ports:
- 4567:4567
restart: unless-stopped
EOF
fi
docker-compose up -d
ufw allow 4567/tcp
yellow "-----------------------------------------------"
green " Web 端口:4567"
echo
green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1):4567"
echo
green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2}'):4567"
echo
green " 查看日志 - docker logs tachidesk-server "
echo
green " Tachidesk Server 安装完毕!"
yellow "-----------------------------------------------"
}
tachidesk-server_install

个人版本(推荐)

1
wget https://raw.githubusercontent.com/18nome/docker/main/Tachidesk-Server.sh && chmod +x Tachidesk-Server.sh && bash Tachidesk-Server.sh
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
#! /bin/bash

red(){
echo -e "\033[31m\033[01m$1\033[0m"
}
green(){
echo -e "\033[32m\033[01m$1\033[0m"
}
yellow(){
echo -e "\033[33m\033[01m$1\033[0m"
}


# Tachidesk Server

function tachidesk-server_install(){
if nc -z localhost 4567; then
green " 4567 端口已经被占用,请检查相关进程"
exit 1
fi
if docker ps -a --format "{{.Names}}" | grep -q "tachidesk-server"; then
green " tachidesk-server 容器名已经被占用"
exit 1
fi
if [ ! -d /root/docker/Tachidesk-Server ]; then
mkdir -p /root/docker/Tachidesk-Server
fi
cd /root/docker/Tachidesk-Server
if [ -d "data" ]; then
yellow "-----------------------------------------------"
green " data 文件夹已经存在, 跳过执行 docker cp 命令"
yellow "-----------------------------------------------"
else
docker run -itd -p 4567:4567 --name tachidesk-server rahn2029/tachidesk-server:1.0
docker cp tachidesk-server:/root/.local/share/Tachidesk $(pwd)/data
docker stop tachidesk-server && docker rm tachidesk-server
fi
if [ -f "docker-compose.yaml" ] || [ -f "docker-compose.yml" ]; then
echo
green " docker-compose 文件已经存在, 跳过创建 docker-compose.yaml 步骤"
echo
else
cat <<EOF > docker-compose.yaml
---
version: "2.1"
services:
suwayomi:
image: rahn2029/tachidesk-server:1.0
container_name: tachidesk-server
environment:
- TZ=Asia/Shanghai
volumes:
- ./data:/root/.local/share/Tachidesk
ports:
- 4567:4567
restart: unless-stopped
EOF
fi
docker-compose up -d
ufw allow 4567/tcp
yellow "-----------------------------------------------"
green " Web 端口:4567"
echo
green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1):4567"
echo
green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2}'):4567"
echo
green " 查看日志 - docker logs tachidesk-server "
echo
green " Tachidesk Server 安装完毕!"
yellow "-----------------------------------------------"
}
tachidesk-server_install

总结

官方版本的 Docker-Compose 权限问题被折磨了好久,突然发现不就是一个环境,一个软件,命令开启吗?为什么要弄的那么复杂呢。

在内部执行的 apt-get 步骤,严重拖垮了在本地本就网络不佳的环境,接着出现的许多奇怪错误。

如今不再需要漫长的等待!


项目地址: https://github.com/Suwayomi/docker-tachidesk

项目下载:https://github.com/Suwayomi/Tachidesk-Server/releases/tag/v0.7.0