Een NameOcean App Server is een Linux-server met uw project in een git-repository. U pusht, en het draait. Deze handleiding brengt een Flask-app van de eerste push naar een eigen domein met HTTPS; bij Django, Node.js en Next.js verschilt slechts één regel.
visitor ──HTTPS:443──▶ NameOcean load balancer ──HTTP:80──▶ nginx ──▶ your app on 127.0.0.1:8000
De load balancer beheert de certificaten, dus de server bedient alleen poort 80. Uw app luistert op 127.0.0.1:8000 onder supervisor, en nginx stuurt verzoeken door naar de app.
$ 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
Een server wordt maandelijks gefactureerd; servers create zonder --yes toont alleen de prijs. U kunt de server ook aanmaken via Dashboard → Hosting. ssh-keys add installeert ~/.ssh/id_ed25519.pub, die git gebruikt om te pushen.
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
In deploy.sh komen de buildstappen: pakketten installeren, migraties, npm run build. De uitvoer verschijnt in uw terminal wanneer u pusht.
$ git add . && git commit -m "First deploy" $ nameocean deploy 3f9a1c2e
nameocean deploy voegt een git-remote met de naam nameocean toe, pusht de huidige branch naar /root/app op de server (de server deployt vanaf dan die branch), pusht deze ook naar uw eigen origin en herstart de apps.
Vertel supervisor hoe de app gestart moet worden en nginx dat verzoeken naar de app moeten worden doorgestuurd. Beide bestanden staan op de server, met voorbeelden voor elke stack; u hoeft alleen het commentaar te verwijderen.
$ 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
De [program:app] voor 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
Voor andere stacks verandert alleen command (het bestand bevat deze voorbeelden ook):
| 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 met 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 en npm ci && npm run build in deploy.sh |
| Go | /root/app/server en go build -o server . in deploy.sh |
Uw app staat nu live op https://3f9a1c2e.nameocean.org.
$ nameocean servers env set 3f9a1c2e SITE_NAME=Kahvebot SECRET_KEY=…
Elke app, deploy.sh en SSH-sessie krijgt ze, en de apps herstarten om ze in te lezen. Ze worden alleen op de server bewaard, nooit in de repository of in de database van NameOcean.
$ nameocean bind kahvebot.com 3f9a1c2e
De DNS van het domein moet bij NameOcean staan. NameOcean voegt de DNS-records toe, geeft het certificaat uit en configureert de load balancer (HTTP naar HTTPS, en het kale domein naar www); dit duurt meestal enkele minuten. Op de server verandert niets.
$ git commit -am "New page" $ nameocean deploy $ nameocean servers logs 3f9a1c2e --app app -f # if it does not come up
Elke deploy verstuurt een server.deployed webhook-event met de commit en of de apps zijn opgestart. Back-ups, herstarts en de rest van de API: App Server API. De server bevat een handleiding voor AI-agents in /root/AGENTS.md.