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 - 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
|
- 要将数据挂载进行保存,需要将容器内部的文件复制到当前位置的
data 目录下
- 添加权限,如果没有权限,文件夹会被拒绝访问,发生错误
- 停止容器并删除
- 使用
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
|
个人版本的 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
|
环境变量
官方版本的环境变量
| 变量 |
默认值 |
描述 |
| 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"
RUN apt-get update && \ apt-get -y install gettext-base && \ apt-get clean && \ rm -rf /var/lib/apt/lists/*
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
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"]
|
个人版本的 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" }
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" }
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