En NameOcean App Server er en Linux-server med dit projekt i et git-repository. Du pusher, og den kører. Denne vejledning tager en Flask-app fra det første push til sit eget domæne med HTTPS; Django, Node.js og Next.js adskiller sig kun på én linje.
visitor ──HTTPS:443──▶ NameOcean load balancer ──HTTP:80──▶ nginx ──▶ your app on 127.0.0.1:8000
Load balanceren har certifikaterne, så serveren betjener kun port 80. Din app lytter på 127.0.0.1:8000 under supervisor, og nginx videresender forespørgsler til den.
$ nameocean servers plans $ nameocean servers create --plan starter --yes $ nameocean servers ls ID NAME STATUS PLAN DEFAULT DOMAIN DOMAINS 812 3f9a1c2e running starter 3f9a1c2e.nameocean.org - $ nameocean servers ssh-keys add 3f9a1c2e
En server faktureres månedligt; servers create uden --yes viser kun prisen. Du kan også oprette den under Dashboard → Hosting. ssh-keys add installerer ~/.ssh/id_ed25519.pub, som git bruger til at pushe.
import os
from flask import Flask
app = Flask(__name__)
@app.get("/")
def home():
return f"Hello from {os.environ.get('SITE_NAME', 'NameOcean')}"
flask gunicorn
#!/bin/bash # runs on the server after every push, in /root/app, with your env variables set -e pip install -r requirements.txt
deploy.sh er stedet til build-trin: installation af pakker, migreringer, npm run build. Outputtet vises i din terminal, når du pusher.
$ git add . && git commit -m "First deploy" $ nameocean deploy 3f9a1c2e
nameocean deploy tilføjer et git-remote ved navn nameocean, pusher den aktuelle branch til /root/app på serveren (serveren udruller derefter den branch), pusher den også til dit eget origin og genstarter apps.
Fortæl supervisor, hvordan appen startes, og nginx, at forespørgsler skal videresendes til den. Begge filer ligger på serveren med eksempler for hver stack; du skal blot fjerne udkommenteringen.
$ nameocean servers info 3f9a1c2e # the ssh line $ ssh -p 2152 root@3f9a1c2e.nameocean.org # vi /root/conf/supervisor.conf # uncomment the Flask [program:app] and the shared settings # supervisorctl reread && supervisorctl update # vi /root/conf/nginx.conf # remove the static "location /", uncomment the proxy one # nginx -t && systemctl reload nginx # curl -s http://127.0.0.1/ Hello from NameOcean
[program:app] til Flask:
[program:app] command=/root/.pyenv/versions/app/bin/gunicorn app:app --workers 2 --bind 127.0.0.1:8000 directory=/root/app environment=PATH="/root/.pyenv/versions/app/bin:/usr/local/bin:/usr/bin:/bin" autostart=true autorestart=true redirect_stderr=true stdout_logfile=/var/log/supervisor/app.log
For andre stacks ændres kun command (filen indeholder også disse eksempler):
| Django | /root/.pyenv/versions/app/bin/gunicorn myproject.wsgi:application --workers 2 --bind 127.0.0.1:8000 |
| FastAPI | /root/.pyenv/versions/app/bin/uvicorn main:app --host 127.0.0.1 --port 8000 --workers 2 |
| Node.js | /usr/bin/node server.js med environment=NODE_ENV="production",PORT="8000",HOST="127.0.0.1" |
| Next.js | /usr/bin/npx next start -H 127.0.0.1 -p 8000 og npm ci && npm run build i deploy.sh |
| Go | /root/app/server og go build -o server . i deploy.sh |
Din app er nu live på https://3f9a1c2e.nameocean.org.
$ nameocean servers env set 3f9a1c2e SITE_NAME=Kahvebot SECRET_KEY=…
Alle apps, deploy.sh og SSH-sessioner får dem, og apps genstartes for at indlæse dem. De gemmes kun på serveren, aldrig i repositoryet eller i NameOceans database.
$ nameocean bind kahvebot.com 3f9a1c2e
Domænets DNS skal ligge hos NameOcean. NameOcean tilføjer DNS-posterne, udsteder certifikatet og opsætter load balanceren (HTTP til HTTPS og det rene domæne til www); det tager normalt et par minutter. Intet ændres på serveren.
$ git commit -am "New page" $ nameocean deploy $ nameocean servers logs 3f9a1c2e --app app -f # if it does not come up
Hver udrulning sender en server.deployed-webhook-hændelse med commit'et og om apps'ene kom op. Backups, genstarter og resten af API'et: App Server API. Serveren har en vejledning til AI-agenter i /root/AGENTS.md.