Un App Server NameOcean est un serveur Linux avec votre projet dans un dépôt git. Vous faites un push, il s'exécute. Ce guide accompagne une application Flask du premier push jusqu'à son propre domaine en HTTPS ; pour Django, Node.js et Next.js, seule une ligne change.
visitor ──HTTPS:443──▶ NameOcean load balancer ──HTTP:80──▶ nginx ──▶ your app on 127.0.0.1:8000
Le load balancer détient les certificats, le serveur ne sert donc que le port 80. Votre application écoute sur 127.0.0.1:8000 sous supervisor, et nginx lui transmet les requêtes.
$ 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
Un serveur est facturé mensuellement ; servers create sans --yes affiche uniquement le prix. Vous pouvez aussi le créer depuis Tableau de bord → Hébergement. ssh-keys add installe ~/.ssh/id_ed25519.pub, que git utilise pour le push.
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 contient les étapes de build : installation des paquets, migrations, npm run build. Sa sortie s'affiche dans votre terminal lors du push.
$ git add . && git commit -m "First deploy" $ nameocean deploy 3f9a1c2e
nameocean deploy ajoute un remote git nommé nameocean, pousse la branche courante dans /root/app sur le serveur (le serveur déploie ensuite cette branche), la pousse aussi vers votre propre origin, puis redémarre les applications.
Indiquez à supervisor comment démarrer l'application et à nginx de lui transmettre les requêtes. Les deux fichiers se trouvent sur le serveur avec des exemples pour chaque stack ; il vous suffit de décommenter.
$ 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
Le [program:app] pour 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
Pour les autres stacks, seule la ligne command change (le fichier contient aussi ces exemples) :
| 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 avec 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 et npm ci && npm run build dans deploy.sh |
| Go | /root/app/server et go build -o server . dans deploy.sh |
Votre application est désormais en ligne sur https://3f9a1c2e.nameocean.org.
$ nameocean servers env set 3f9a1c2e SITE_NAME=Kahvebot SECRET_KEY=…
Chaque application, deploy.sh et session SSH les reçoit, et les applications redémarrent pour les lire. Ils sont conservés uniquement sur le serveur, jamais dans le dépôt ni dans la base de données de NameOcean.
$ nameocean bind kahvebot.com 3f9a1c2e
Le DNS du domaine doit être hébergé chez NameOcean. NameOcean ajoute les enregistrements DNS, émet le certificat et configure le load balancer (HTTP vers HTTPS, et le domaine nu vers www) ; cela prend généralement quelques minutes. Rien ne change sur le serveur.
$ git commit -am "New page" $ nameocean deploy $ nameocean servers logs 3f9a1c2e --app app -f # if it does not come up
Chaque déploiement envoie un événement webhook server.deployed avec le commit et l'indication du démarrage des applications. Sauvegardes, redémarrages et le reste de l'API : API App Server. Le serveur contient un guide pour les agents IA dans /root/AGENTS.md.