En NameOcean App Server er en Linux-server med prosjektet ditt i et git-repositorium. Du pusher, og den kjører. Denne veiledningen tar en Flask-app fra første push til eget domene med HTTPS; for Django, Node.js og Next.js er det bare én linje som er annerledes.
visitor ──HTTPS:443──▶ NameOcean load balancer ──HTTP:80──▶ nginx ──▶ your app on 127.0.0.1:8000
Lastbalansereren har sertifikatene, så serveren betjener bare port 80. Appen din lytter på 127.0.0.1:8000 under supervisor, og nginx sender forespørsler videre 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ånedlig; servers create uten --yes viser bare prisen. Du kan også opprette den under Kontrollpanel → Hosting. ssh-keys add installerer ~/.ssh/id_ed25519.pub, som git bruker til å 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 for byggetrinn: installering av pakker, migreringer, npm run build. Utdataene vises i terminalen din når du pusher.
$ git add . && git commit -m "First deploy" $ nameocean deploy 3f9a1c2e
nameocean deploy legger til en git-remote kalt nameocean, pusher gjeldende gren til /root/app på serveren (serveren distribuerer den grenen fra da av), pusher den også til din egen origin og starter appene på nytt.
Fortell supervisor hvordan appen skal startes, og nginx at forespørsler skal sendes til den. Begge filene ligger på serveren med eksempler for hver stack; du trenger bare å fjerne kommentartegnene.
$ 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] for 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 stacker endres bare command (filen inneholder også disse eksemplene):
| 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 |
Appen din er nå tilgjengelig på https://3f9a1c2e.nameocean.org.
$ nameocean servers env set 3f9a1c2e SITE_NAME=Kahvebot SECRET_KEY=…
Alle apper, deploy.sh og SSH-økter får dem, og appene startes på nytt for å lese dem. De lagres bare på serveren, aldri i repositoriet eller i NameOceans database.
$ nameocean bind kahvebot.com 3f9a1c2e
Domenets DNS må ligge hos NameOcean. NameOcean legger til DNS-postene, utsteder sertifikatet og setter opp lastbalansereren (HTTP til HTTPS, og domenet uten www til www); det tar vanligvis noen minutter. Ingenting endres på serveren.
$ git commit -am "New page" $ nameocean deploy $ nameocean servers logs 3f9a1c2e --app app -f # if it does not come up
Hver deploy sender en server.deployed-webhook-hendelse med commiten og om appene startet. Sikkerhetskopier, omstarter og resten av API-et: App Server API. Serveren har en veiledning for AI-agenter i /root/AGENTS.md.