Docker Compose部署的Joplin server怎么使用多个访问域名请教

我正在用Docker Compose搭建一个Joplin服务器,这个服务器只能通过指定的域名端口访问。
我已经用ZeroTier的内网IP替代了域名。但是这样做有点麻烦,因为我也设置了IPv6的DDNS,这样我就可以通过IPv6的域名访问服务器,不需要一直连着ZeroTier。
可是,Joplin服务器只能用ZeroTier的内网IP,不能通过IPv6的域名访问,否则就会出现Invalid origin。咋实现http://zerotierIP:22300或者http://IPv6的域名:22300都可以使用joplin server呢?

以下是我现在的Docker Compose和.env的配置文件,拜托大家了:

version: '3'
services:

  db:
    image: postgres:16
    volumes:
        - /mnt/mydisk/joplin:/var/lib/postgresql/data
    ports:
        - "5432:5432"
    restart: unless-stopped
    environment:
        - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
        - POSTGRES_USER=${POSTGRES_USER}
        - POSTGRES_DB=${POSTGRES_DATABASE}

  app:
    image: etechonomy/joplin-server:latest 
    depends_on:
        - db+
    ports:
        - "22300:22300"
    restart: unless-stopped
    environment:
        - APP_PORT=22300
        - APP_BASE_URL=${APP_BASE_URL}
        - DB_CLIENT=pg
        - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
        - POSTGRES_DATABASE=${POSTGRES_DATABASE}
        - POSTGRES_USER=${POSTGRES_USER}
        - POSTGRES_PORT=${POSTGRES_PORT}
        - POSTGRES_HOST=db



.env
POSTGRES_PASSWORD=joplin
POSTGRES_DATABASE=joplin
POSTGRES_USER=joplin
POSTGRES_PORT=5432
# POSTGRES_HOST=localhost

APP_BASE_URL=http://172.25.xx.xx:22300
3 个赞

是不是可以在同一个docker网络部署nginx,把外面nginx端口的请求转到joplin22300端口就行了。

同一个机子就行吧

不是很会操作呀,我只有个dnvy6的免费ipv6域名,不大会搞

nginx转发的是22300端口,而要修改的是域名,好像还不大一样。

尝试了用nginx代理,反代成功了,但还是显示Invalid origin。还是APP_BASE_URL不能输入localhost或者127.0.0.1的原因。

server {
    listen 5600;
    server_name _;

    location / {
        proxy_pass http://172.25.9.99:22300;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host:22300;
        proxy_cache_bypass $http_upgrade;
    }
}

都在本地环境 当然是 127.0.0.1:22300

都试过了,不行才来问的,打扰了 :sweat_smile:我确实是新手,自己捣鼓捣鼓

多熟悉熟悉就好了

ipv6 的 nginx 配置注意 和 ipv4 有点不同

嗯嗯,谢谢你

你nginx打算监听哪个端口?? 下面四行分别对应了监听443的https、监听5600的http X ipv4/ipv6的四个版本。default_server是可选项,以及根据你的描述,应该是 ipv6 的对应行没加上

listen       443 ssl http2 default_server;
listen       [::]:443 ssl http2 default_server;
listen 5600 default_server;
listen [::]:5600 default_server;

我没尝试ipv6了。
就算是另外一个内网ip,192.168.123.31,监听上了。但是显示invalid origin,应该是joplin server的问题,不支持除了APP_BASE_URL以外的ip或者域名。localhost或者127.0.0.1都不行。我在joplin论坛好像看到过这句话。作者有他自己的逻辑把。
现在连zerotier将就用,也挺方便的。虽然手机连着有时候打洞比较慢,也够用了。