首页 > 系统相关 >ddns-go手动安装,配置acme获取证书,nginx反代

ddns-go手动安装,配置acme获取证书,nginx反代

时间:2024-08-05 17:41:51浏览次数:11  
标签:反代 acme -- sudo nginx ddnsgo 日志 ddns

ddns-go的手动安装并使用nginx反代

一、下载最新ddngo软件包

wget https://github.com/jeessy2/ddns-go/releases/download/v6.6.7/ddns-go_6.6.7_linux_x86_64.tar.gz

二、手动安装ddnsgo

1. 创建ddnsgo目录

sudo mkdir /opt/ddnsgo
#创建运行ddnsgo的用户
sudo useradd -r -s /usr/sbin/nologin -d /opt/ddnsgo -U -M ddnsgo
  • -r:创建一个系统账户。
  • -s: /usr/sbin/nologin:禁止登录。
  • -d: /opt/ddnsgo:设置用户家目录,
  • -U:创建一个同名组。
  • -M:不创建家目录。

2. 解压到ddnsgo目录

sudo tar -xzvf ddns-go_6.6.7_linux_x86_64.tar.gz -C /opt/ddnsgo

3. 创建ddnsgo的配置文件

#/opt/ddnsgo/.ddns_go_config.yaml (tee -a追加append)
sudo tee /opt/ddnsgo/.ddns_go_config.yaml << EOF
dnsconf:
    - name: cloudflare
      ipv4:
        enable: false
        gettype: url
        url: https://myip.ipip.net, https://ddns.oray.com/checkip, https://ip.3322.net, https://4.ipw.cn
        netinterface: ""
        cmd: ""
        domains:
            - ""
      ipv6:
        enable: false
        gettype: url
        url: https://speed.neu6.edu.cn/getIP.php, https://v6.ident.me, https://6.ipw.cn
        netinterface: ""
        cmd: ""
        ipv6reg: ""
        domains:
            - ""
      dns:
        name: cloudflare
        id: ""
        secret: yourtoken
      ttl: ""
user:
    username: 
    password: 
webhook:
    webhookurl: ""
    webhookrequestbody: ""
    webhookheaders: ""
notallowwanaccess: false
lang: zh
EOF

#赋权
sudo chown -R ddnsgo:ddnsgo /opt/ddnsgo
sudo chmod 600 /opt/ddnsgo/.ddns_go_config.yaml

4. 创建ddnsgo的systemd服务

#使ddnsgo监听本地即可
sudo tee /etc/systemd/system/ddns-go.service << EOF
[Unit]
Description=Simple and easy to use DDNS. Automatically update domain name resolution to public IP (Support Aliyun, Tencent Cloud, Dnspod, Cloudflare, Callback, Huawei Cloud, Baidu Cloud, Porkbun, GoDaddy...)
ConditionFileIsExecutable=/opt/ddnsgo/ddns-go
 
Requires=network.target  
After=network-online.target 

[Service]
StartLimitInterval=5
StartLimitBurst=10
ExecStart=/opt/ddns-go/ddns-go "-l" "127.0.0.1:9876" "-f" "300" "-cacheTimes" "5" "-c" "/opt/ddnsgo/.ddns_go_config.yaml"
User=ddnsgo
Group=ddnsgo
Restart=always
RestartSec=120
EnvironmentFile=-/etc/sysconfig/ddns-go

[Install]
WantedBy=multi-user.target
EOF

#重载systemd 启动ddnsgo
sudo systemctl daemon-reload
sudo systemctl enable ddnsgo --now

三、安装acme自动申请证书

1. 安装acme

sudo apt install cron
sudo curl https://get.acme.sh | sh -s [email protected] --force
sudo source ~/.bashrc

2. 手动添加cf token

#token方式 编辑account.conf
echo "SAVED_CF_Token='yourtoken'" | sudo tee -a /root/.acme.sh/account.conf

3. 更换默认CA机构

#这里选择 Let's Encrypt
sudo acme.sh --set-default-ca --server letsencrypt

4. 获取证书并安装

#使用cf的dnsapi
acme.sh --issue --dns dns_cf -d *.yoursite.xyz

#安装证书 nginx先得安装好并创建ssl目录
acme.sh --install-cert -d example.com \
--key-file       /etc/nginx/ssl/key.pem  \
--fullchain-file /etc/nginx/ssl/cer.pem \

#全自动更新证书
acme.sh --issue --dns dns_cf -d *.yoursite.xyz \
    --renew-hook "acme.sh --install-cert -d *.yoursite.xyz  \
    --key-file       /etc/nginx/ssl/key.pem \
    --fullchain-file /etc/nginx/ssl/cer.pem \
    --reloadcmd      \"systemctl reload nginx\""

后续acme.sh就可以自动更新证书并安装了

四、配置nginx反代

1. 安装nginx

#这个就不说了吧
sudo apt install nginx
sudo systemctl enable nginx.service --now

2. 增加反代配置文件ddnsgo.conf

sudo tee /etc/nginx/conf.d/ddnsgo.conf << EOF
server
    {
        listen 80;
        listen [::]:80;
        server_name yoursite.xyz;
        return 301 https://$host$request_uri;
}
server
    {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name yoursite.xyz;
        charset utf-8;

        ssl_certificate /etc/nginx/ssl/cer.pem;
        ssl_certificate_key /etc/nginx/ssl/key.pem;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;
        # openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
        #ssl_dhparam /etc/nginx/ssl/dhparam.pem;

        location / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Range $http_range;
            proxy_set_header If-Range $http_if_range;
            proxy_redirect off;
            proxy_pass http://127.0.0.1:9876;
            # the max size of file to upload
            client_max_body_size 20000m;
        }

        access_log /var/log/nginx/ddnsgo-access.log;
        error_log /var/log/nginx/ddnsgo-error.log;
    }
EOF

3.检查配置文件重载nginx

#检查配置文件无误
sudo nginx -t
#重载nginx
sudo systemd reload nginx

五、为nginx配置logrotate日志轮转

1. 安装logrotate

sudo apt update
sudo apt install logrotate

2. 配置Nginx的logrotate

默认情况下,logrotate已经提供了Nginx的日志轮转配置文件,位于/etc/logrotate.d/nginx

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        [ -s /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid`
    endscript
}
  • /var/log/nginx/*.log: 指定要轮转的日志文件路径。Nginx日志通常位于/var/log/nginx/目录下。
  • daily: 日志轮转的频率,这里设置为每天。你也可以使用weeklymonthly
  • missingok: 如果日志文件丢失,不会报错继续进行。
  • rotate 14: 保留14个轮转的日志文件(即保留14天的日志)。
  • compress: 轮转后的日志文件进行压缩。
  • delaycompress: 推迟一个轮转周期压缩日志文件,这样保证当前日志文件和最近一个日志文件不被压缩。
  • notifempty: 如果日志文件为空,则不进行轮转。
  • create 0640 www-data adm: 轮转后创建新的日志文件,并设置文件权限和所属用户组。
  • sharedscripts: 如果在这个配置块中有多个日志文件匹配模式,则确保所有日志文件轮转后才执行postrotate脚本。
  • postrotate ... endscript: 在日志轮转后执行的脚本,这里通过向Nginx主进程发送USR1信号通知Nginx重新打开日志文件。[ -s /run/nginx.pid ]用于检查Nginx的PID文件是否存在并且大小非零。

3. 手动测试 logrotate 配置

在设置完成后,可以手动测试logrotate配置以确保它正常工作:

sudo logrotate -d /etc/logrotate.d/nginx

-d 选项用于调试模式,不会实际轮转日志文件,只会显示轮转过程。

如果一切看起来正常,可以强制执行一次日志轮转:

sudo logrotate -f /etc/logrotate.d/nginx

总结

ddnsgo使用无法登录的普通用户运行相较于直接使用root运行更安全,同时配置ddnsgo只监听本地,可以避免ddnsgo端口暴露公网。配置了acme自动获取证书,使用nginx反向代理可以实现https的访问。最后使用logrotate使nginx日志文件更加合理,方便管理。

标签:反代,acme,--,sudo,nginx,ddnsgo,日志,ddns
From: https://www.cnblogs.com/holdmyhand/p/18343696

相关文章

  • ssl证书90天过期?保姆级教程——使用acme.sh实现证书的自动续期
    前言最近https到期了,想着手动更新一下https证书,结果发现证书现在的有效期只有90天,于是想找到一个自动更新证书的工具,发现了acme.sh,但是网上的文章质量参差不齐,可能需要多篇文章结合来操作,一步步试错。我这里结合了腾讯云的相关文档和一些其他的博文,保证一次性操作成功。下载acme.......
  • 使用群晖纯内置功能实现DDNS,SSL证书申请,反向代理
    1.IPV6DDNS家里没有IPV4公网,现在一般的宽带都自带IPV6公网地址,因此可以通过IPV6实现外网对群晖的访问。但是这个IPV6地址在群晖重启或者隔一段时间后会发生变化,因此我们要把他映射到一个域名上面,通过这个固定的域名去访问群晖,这个映射动态IP到固定域名的过程就叫DDNS。群晖其实......
  • 免费ACME证书申请接口:可以简化SSL/TLS证书申请
    ACME证书申请接口:简化SSL/TLS证书获取的利器在当今互联网安全日益受到重视的背景下,HTTPS已成为网站安全通信的标配。而HTTPS的核心在于SSL/TLS证书,它能够确保数据传输的完整性和安全性。然而,传统的手动创建和安装证书流程复杂且耗时,不利于网站的快速部署和安全更新。为了解决这......
  • 免费ddns工具,快解析DNS解析使用教程
    DDNS(DynamicDomainNameServer),中文叫动态域名解析,主要用于没有固定公网ip的网络环境下,使用一个固定的域名,解析动态变化的ip地址,达到远程访问的目的。众所周知,目前公网ip资源非常紧缺,固定公网ip价格非常昂贵,而动态公网ip因为每天都会变,使用起来很不方便。这时DDNS的价值就提......
  • 免费ddns工具,快解析DNS解析使用教程
    DDNS(DynamicDomainNameServer),中文叫动态域名解析,主要用于没有固定公网ip的网络环境下,使用一个固定的域名,解析动态变化的ip地址,达到远程访问的目的。众所周知,目前公网ip资源非常紧缺,固定公网ip价格非常昂贵,而动态公网ip因为每天都会变,使用起来很不方便。这时DDNS的价值就提......
  • 申请SSL证书保姆级教程,包括FreeSSL申请、Acme脚本申请等方式。
    Acme脚本申请证书Acme脚本申请证书,是我们用到的最常见的一种证书的申请方式,它有很多的申请方法,大家只需要找到一种适合自己的也就好了。不管用下面的何种方式申请,都需要安装Acme,有一部分的申请场景需要用到相关的插件,所以我们需要提前安装。下面环境的安装方式,大家根据自己......
  • [转]使用acme.sh自动申请、续期、部署免费的SSL证书
    原文地址:使用acme.sh自动申请、续期、部署免费的SSL证书-RidingWind-博客园参考文档:https://github.com/acmesh-official/acme.sh一个使用纯shell操作的免费SSL证书申请部署工具。免费的SSL证书由以下CA机构提供:ZeroSSL.comCA(default)Letsencrypt.orgCABuyPass.comCASSL......
  • 域名证书自动续期脚本acme同一证书更新后安装到多个程序目录的方法
    需求:同一个证书,有两个程序在使用,比如,nginx和apache,使用acme进行自动续期,前面都正常,但是使用acme.sh--install-cert的时候,只会记住最后一次设定的目录,比如先执行了nginx的,后执行了apache,则续费后,只更新apache的证书目录,想要实现两个都更新.解决方法:1.笨方法:将两......
  • 「杂文」身为 ACMer 的我算法分析与设计居然挂了,我为什么会做这样的梦(雾)
    目录写在前面判断简答影响时间复杂度的因素排序Prim和Kruskal的异同贪心和DP的区别DP与分治的区别贪心,DP与分治分支界限法和回溯法的异同计算与算法应用题复杂度计算分支界限法分支界限法背包分支界限法求单源最短路径算法设计题写在最后写在前面臭打ACM的懂个屁的算法......
  • NAT-DDNS内网穿透技术,快解析DDNS的优势
    进行NAT穿透,是为了使具有某一个特定源IP地址和源端口号的数据包不被NAT设备屏蔽而正确路由到内网主机。对于穿透类型,一般分为两大类,一是基础NAT,另一个是NAPT,大家可能并不怎么了解。今天小编来为大家详细说一说内网穿透技术中基础NAT和NAPT,以及NAPT中对称型NAT和非对称型N......