
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Complete system to create your own dynamic DNS server.
Based on the dprandzioch project: https://github.com/dprandzioch/docker-ddns
PyDDNs is a complete solution, allows you to set up and manage their own dns, compatible with the dyndns2 protocol, the user can update his ip by web interface or using a compatible client for example ddclient.
!screenshots
VIDEO: [***]
Install git
Install docker - Dockerhttps://docs.docker.com/install/
Install docker-composer - https://docs.docker.com/compose/install/
important: if you use ubuntu 18 you should see the note at the end of this text
IMPORTANT: If you are using PyDDNS v1 before updating, make a backup of the file docker-compose.yml
cd PyDDNScp .env-demo .envnano .envDOMAIN=ddns.demo.com <-- our domain SHARED_SECRET=el@sadsadyS58 <-- password for internal API-REST DATABASE_NAME=pyddns DATABASE_USER=pyddns DATABASE_PASS=PyDyn@m1cDNSP0s DATABASE_HOST=postgres DATABASE_PORT=5432 DJANGO_SU_NAME=admin DJANGO_SU_EMAIL=admin@company.com DJANGO_SU_PASSWORD=1234 <-- Password to default administrator DJANGO_DEBUG=1 DJANGO_LOG_LEVEL=INFO DJANGO_PYTHONUNBUFFERED=1 OWN_ADMIN: 1 <-- 1 = all users can create subdomains, 0 = only the administrator can create subdomains DNS_ALLOW_AGENT: ddclient3,ddclient <-- If you want to control by client, put their names separated by comma WEB_PORT=80 DNS_PORT=53
docker-compose up
You need a subdomain for example: ddns.demo.com
Then you must create an NS record as follows: ddns.demo.com IN NS X.X.X.X <-- SERVER PUBLIC IP (CHECK)
Example in ***d9:
ddns.demo.com. IN A X.X.X.X $ORIGIN ddns.demo.com. @ IN NS ddns.demo.com.
As web today is almost required to have SSL the package is setup for that by default.
mkdir -p data/certs/openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout data/certs/https.key -out data/certs/https.crt/data/certsIt is not recomended to run without SSL but if you wish to
Edit /config/nginx/mydjango.conf and comment this line:
return 302 https://$host$request_uri;
This is usefull for creating the @ A X.X.X.X that is needed from above. Sometimes you wish to have some static records or change the zone file outside of what you can do via gui.
docker-compose exec ddns bashrndc freeze ddns.demo.comdata/bind-data/ddns.demo.com.zonerndc thaw ddns.demo.comAdd the A record line (change to your PUBLIC IP). Your file will look something like this,
$ORIGIN . $TTL 86400 ; 1 day ddns.demo.com IN SOA localhost. root.localhost. ( 75 ; serial 3600 ; refresh (1 hour) 900 ; retry (15 minutes) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS localhost. A 1.2.3.4 $ORIGIN ddns.demo.com. $TTL 60 ; 1 minute
sometimes we want to have a friendly url for the web interface, in this case, you don't need edit static records or glue records. For example, if you want to use myip.ddns.com for your web interface. Then you only need to create an A record in your DNS pointing to the public IP of PYDDNS.
Now you will have myip.demo.com for the web interface and ddns.demo.com for the dynamic dns service.
!screenshots
You can use any client compatible with the DynDNS2 protocol.
For Windows
I recommend using DynDNS Simply Client, you can download it here: https://sourceforge.net/projects/dyndnssimplycl/
!screenshots
For Linux and Mac OS X
I recommend using ddclient, basic configuration:
protocol=dyndns2 use=web, web=checkip.dyndns.com, web-skip='IP Address' server=localhost.com ssl=no login=userdemo password='userpassword' yourdomain.ddns.demo.com
The system automatically detects the language of your browser. If you want to add your translations you must follow the following steps:
docker-compose exec python bashpython manage.py makemessages --locale esappdata/pyddns/locale/XXXX/LC_MESSAGES/django.popython manage.py compilemessagesConfig default language in .env file
On Ubuntu , port 53 is most likeley already busy with the systemd-resolve service.
To check this run this command.
sudo lsof -i :53
If the command shows that systemd-resolve then we need to change so that it does not ***d the port. First, edit /etc/systemd/resolved.conf, and for DNS enter your dns server ip (1.1.1.1 for cloudflare or 8.8.8.8 for google).
[Resolve] DNS=1.1.1.1 #FallbackDNS= #Domains= #LLMNR=no #MulticastDNS=no #DNSSEC=no #DNSOverTLS=no #Cache=no DNSStubListener=no #ReadEtcHosts=yes
Then link the file to etc
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
And lastly reboot:
sudo reboot
[***]
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务