2

我正在尝试将 gitea 设置为将 https 与我从letsencrypt 以普通用户身份运行服务获得的证书一起使用。

我已经使用普通用户在端口 80 上使用 httpgit并使用 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 Failedwith Error code: SSL_ERROR_RX_RECORD_TOO_LONG

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

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

4

3 回答 3

3

万一其他人需要它,最终的配置文件就是这个,它将http请求重定向到https。

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

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
于 2019-10-01T12:04:11.447 回答
1

Letencrypt api 包含在 gitea 中。要使用 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"
....
于 2021-02-25T18:41:51.007 回答
0

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/

于 2019-10-01T10:53:25.463 回答