gitea 使用普通用户和 https

gitea using a normal user and https

我正在尝试将 gitea 设置为使用 https 和我从 letsencrypt 运行以 普通用户.

获得的证书

我已经让普通用户在端口 80 上使用 http git 并使用 iptables 将端口 80 重定向到端口 3000。

此外,我已经在端口 3000 上使用 https 重定向到端口 3080。

但我不知道如何配置它(可能与 iptables 一起配置)以便对端口 80 的请求重定向到适当的端口(3000?3080?)。

我以 root 身份使用此 iptables 命令将端口 80 重定向到端口 3000:

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000

这是我的 HTTP 配置的相关部分

RUN_USER         = git

LOCAL_ROOT_URL   = http://localhost:3000/
DOMAIN           = example
HTTP_PORT        = 80
ROOT_URL         = http://example.com

这是我在端口 3000 上重定向到端口 3080 的 HTTP 配置

RUN_USER            = git

PROTOCOL            = https
LOCAL_ROOT_URL      = https://localhost:3000/
DOMAIN              = example.com
HTTP_PORT           = 3000
REDIRECT_OTHER_PORT = true
PORT_TO_REDIRECT    = 3080
ROOT_URL            = https://example.com
CERT_FILE           = /etc/letsencrypt/live/example.com/fullchain.pem
KEY_FILE            = /etc/letsencrypt/live/example.com/privkey.pem

使用此配置我可以访问 https://example.com:3000 并且它工作正常但是如果我访问 https://example.com:3080 我得到一个 Secure Connection FailedError code: SSL_ERROR_RX_RECORD_TOO_LONG.

我尝试使用 iptables 将端口 80 重定向到端口 3080,但没有成功。

你能帮我设置一下吗,这样我就可以 运行 在 80 端口以普通用户的身份提供服务,这样人们就可以在 https://example.com 访问它了? (也许预先使用 iptables 作为 root 来重定向一些端口)提前致谢

HTTPS 的端口是 443。大多数人会通过使用反向代理而不是 iptables 来解决这个问题。

Gitea 可以处理 letsencrypt 本身。方法如下:

[server]
PROTOCOL=https
DOMAIN=git.example.com
ENABLE_LETSENCRYPT=true
LETSENCRYPT_ACCEPTTOS=true
LETSENCRYPT_DIRECTORY=https
LETSENCRYPT_EMAIL=email@example.com

取自:https://docs.gitea.io/en-us/https-setup/

如果其他人需要它,这里是最终的配置文件,它将 http 请求重定向到 https。

我按照 ptman 的建议使用了 # setcap cap_net_bind_service=+ep /path/to/binary/gitea

RUN_USER            = git

[server]
PROTOCOL            = https
DOMAIN              = example.com
HTTP_PORT           = 443
REDIRECT_OTHER_PORT = true
CERT_FILE           = /etc/letsencrypt/live/example.com/fullchain.pem
KEY_FILE            = /etc/letsencrypt/live/example.com/privkey.pem
SSH_DOMAIN          = example.com
DISABLE_SSH         = false
SSH_PORT            = 22
OFFLINE_MODE        = false

gitea 中包含 letsencrypt api。要使用 docker-compose 设置 gitea 并让我们加密,只需像这样编辑您的 [server] 配置:

....
[server]
APP_DATA_PATH    = /data/gitea
DOMAIN           = example.com
SSH_DOMAIN       = example.com
HTTP_PORT        = 443
ROOT_URL         = http://example.com
PROTOCOL=https
ENABLE_LETSENCRYPT=true
LETSENCRYPT_ACCEPTTOS=true
LETSENCRYPT_DIRECTORY=https
LETSENCRYPT_EMAIL=info@foo.com
.....

您的 docker-compose.yaml 端口配置将如下所示:

  server:
    image: gitea/gitea:1.13.2
    container_name: gitea
    ports:
      - "443:443"
      - "222:22"
....