Webhuset
Tilbake til Nyheter
6 min lesetid

Openship: git push, og appen er live — på din egen VPS

Openship: git push, og appen er live — på din egen VPS

Du kjenner flyten: du pusher til main, og et par minutter senere er appen live på et domene med gyldig sertifikat. Ingen server å logge på, ingen nginx-config å skrive, ingen sertifikater å fornye.

Den flyten er grunnen til at deploy-plattformer har blitt så populære. Den er også grunnen til at regningen vokser, at appen din bor et sted du ikke kontrollerer, og at du en dag oppdager at prisen per container har doblet seg.

Openship gir deg den samme flyten på en maskin du eier selv.

Hva Openship egentlig er

Openship er en selvhostet deploy-plattform med CI/CD innebygd. Du peker den på en kilde — et GitHub-repo, en lokal mappe eller et ferdigbygd artefakt — og den kjører én rørledning fra ende til annen:

  1. Oppdager. Den leser package.json, lockfiler, rammeverkskonfigurasjon og en eventuell docker-compose.yml for å finne ut hvilken stack du kjører, hvilken pakkebehandler du bruker, hvilke kommandoer som bygger og starter, og hvilken port appen lytter på. Null konfigurasjonsfiler kreves. Vil du overstyre, legger du en openship.json i rot.
  2. Bygger. Til et Docker-image eller en ren release. Den løste konfigurasjonen fryses i et snapshot, så en redeploy eller en rollback kjører nøyaktig det som ble sendt ut sist.
  3. Kjører. Som en container som publiseres kun på loopback — aldri på en åpen port ut mot verden — eller som en overvåket prosess på verten.
  4. Ruter og sikrer. En OpenResty-basert edge skriver en reverse proxy-vhost for domenet ditt og henter et Let's Encrypt-sertifikat. Fordi ruting og TLS skjer etter at appen er oppe, blir en DNS-tabbe eller en sertifikatkrøll til en «krever handling»-melding — ikke en feilet deploy og ikke nedetid.
  5. Lytter på push. En GitHub-webhook kjører rørledningen på nytt ved hver push til grenen du følger. I et monorepo bygges bare tjenestene pushen faktisk berørte.

Databaser, domener, SSL, CDN, e-post og backup styres fra samme sted — via desktop-app, nettdashbord eller CLI. Alle tre snakker med samme backend. Det finnes også et REST-API og et MCP-endepunkt, så en AI-agent kan drive deployene dine hvis du vil ha det slik.

Hva du faktisk får

Push-to-deploy og rollback. Preview-miljøer, staging- og prod-flyt, og en rollback som ruller tilbake til nøyaktig den byggekonfigurasjonen som kjørte.

Hvilken som helst stack. Node, Python, Go, Rust, PHP, Ruby, Java, .NET, rene Dockerfiler og monorepoer. Har du allerede en docker-compose.yml, kan den deployes som den er.

Hele bakenden. PostgreSQL, MySQL, MongoDB, Redis, workers, WebSockets og lagring — provisjonert fra dashbordet i stedet for håndrullet med apt install.

Domener og TLS uten fikling. Automatisk Let's Encrypt, wildcards, ubegrenset antall domener, automatisk fornyelse.

CDN, e-post og backup. Edge-caching med HTTP/3 og Brotli. En innebygd SMTP-server med DKIM, SPF og DMARC, så du slipper å koble på en ekstern e-posttjeneste bare for å sende passord-reset. Planlagte backups av databaser og volumer, med gjenoppretting på ett klikk.

Sanntidsinnsyn. Byggelogger, containermetrikker og ressursbruk strømmet mens det skjer.

Ingen innlåsing. Appene dine kjører som vanlige Docker-containere. Vil du flytte til en annen leverandør, tar du med deg containerne. Openship er lisensiert under Apache 2.0, og selvhosting er gratis — det finnes ingen fakturering i den delen i det hele tatt.

Hvem passer det for

Openship gir mest mening hvis du kjenner deg igjen i minst én av disse:

  • Du kjører flere små apper og betaler per container et sted, uten at noen av dem trenger spesielt mye maskin.
  • Du vil ha CI/CD, men ikke bygge og vedlikeholde en pipeline selv.
  • Du har krav om at data skal ligge et bestemt sted, og trenger å kunne peke på maskinen.
  • Du er lei av å skrive den samme nginx-configen og det samme certbot-oppsettet for hvert nye prosjekt.

Det er én ting det er verdt å være ærlig om: dette er infrastruktur du eier. Oppdateringer, backup og sikkerhet er ditt bord. Til gjengjeld er det lite å leve med i praksis — og du bestemmer selv når ting endrer seg.

Slik installerer du Openship på en VPS

Det du trenger

En Linux-VPS med Docker installert — Debian eller Ubuntu i eksemplene under. Docker er det som gir deg den fulle varianten, der appene dine faktisk kjører på samme boks. Uten Docker faller Openship tilbake til en lettere modus som styrer andre servere over SSH, som ikke er det vi er ute etter her.

Du trenger også et domene som peker på serveren. Sett en A-record for kontrollpanelet, for eksempel openship.dittdomene.no. Appene du deployer får hvert sitt domene senere, med automatisk sertifikat — du legger dem til fra dashbordet og peker DNS dit. Portene 80 og 443 må være åpne inn — det er der edge-en lytter og henter sertifikater.

Har du en VPS hos Webhuset, er bunnen klar fra start.

Vei 1 — gjør det selv

1. Installer CLI-en.

curl -fsSL https://get.openship.io | sh

Skriptet henter Bun-runtimen først hvis den mangler, så du trenger verken Node eller npm på serveren. (Har du allerede Node, funker npm i -g openship like fint.)

2. Kjør veiviseren.

openship

Den interaktive veiviseren oppretter den første admin-brukeren, kobler på domenet ditt og installerer Openship som en boot-tjeneste. Kjør den igjen når som helst — den dobler som kontrollpanel for instansen.

Vil du hoppe over dialogen, driver du openship up direkte:

openship up --public-url https://openship.dittdomene.no \
            --managed-edge \
            --acme-email deg@dittdomene.no

--managed-edge installerer OpenResty og henter et gratis Let's Encrypt-sertifikat på boksen, så du slipper å sette opp en reverse proxy foran.

Har du allerede en proxy på 80 og 443, stopper Openship opp og ber deg velge mellom tre ting: migrate, som importerer proxyens sider inn i Openships egen edge; takeover, som stopper den gamle proxyen — og da slutter sidene den serverte å svare; eller cancel, som avbryter. Les det valget nøye på en server som allerede har noe kjørende.

Merk at denne varianten ikke oppretter admin-brukeren for deg. Den registrerer du i dashbordet første gang du åpner det. (Vil du ha alt i én kommando på en headless boks, finnes --non-interactive sammen med --admin-email og --admin-password.)

3. Sjekk at det lever.

På Linux med Docker velger openship up automatisk Compose-modus. Den henter opp Postgres, Redis, API-et, dashbordet og edge-en fra ferdigbygde images — ingen kompilering, ingen monorepo-bygg.

openship status     # kjører den?
openship open       # åpne dashbordet

Dashbordet krever alltid innlogging på en selvhostet instans — det er admin-brukeren fra veiviseren, eller den du registrerer i dashbordet hvis du kjørte openship up direkte.

4. Deploy det første prosjektet.

cd prosjektet-ditt
openship init       # knytt katalogen til et prosjekt
openship deploy

Derfra kobler du på GitHub-repoet i dashbordet, og videre pusher deployer seg selv.

Til daglig: openship update oppgraderer, openship stop stopper, openship status sjekker helsa, og openship doctor går gjennom oppsettet når noe skurrer. Logger for en enkelt deploy henter du med openship logs <deployment-id> — eller bare fra dashbordet, som er lettere.

Alternativ: rå Docker Compose

Vil du styre stacken selv uten CLI-en, ligger den ferdige compose-fila i repoet:

git clone https://github.com/oblien/openship.git && cd openship
cp .env.example .env          # rediger den
docker compose --env-file .env -f docker/docker-compose.yml up -d

To ting å endre i .env før du eksponerer instansen: BETTER_AUTH_SECRET og INTERNAL_TOKEN må begge byttes ut med noe tilfeldig. API-et nekter faktisk å starte uten et ekte INTERNAL_TOKEN. Skal du nå dashbordet fra en annen maskin, må du også sette OPENSHIP_PUBLIC_URL til nøyaktig den adressen nettleseren bruker — ellers laster siden, men innloggingen avvises.

Merk at det er docker/docker-compose.yml du vil ha. Fila i rot er en annen sak — den bygger kontrollplanet fra kildekode og hoster ikke appene dine.

Vei 2 — la en coding agent gjøre det

Vil du heller delegere, gi en coding agent (Claude Code, Codex e.l.) med SSH-tilgang til VPS-en denne prompten:

> Du har SSH-tilgang til en fersk Debian- eller Ubuntu-VPS med Docker installert. Installer Openship som en selvhostet instans: hent CLI-en med curl -fsSL https://get.openship.io | sh, og kjør deretter openship up i Compose-modus med --public-url https://openship.dittdomene.no, --managed-edge og en ACME-e-post jeg oppgir. Bekreft først at DNS for domenet peker på denne serveren, og at portene 80 og 443 er åpne inn i brannmuren — åpne dem hvis ikke, og la alt annet stå urørt. Etter at tjenesten er oppe, kjør openship status og openship doctor og vis meg utdataene. Stopp før du oppretter admin-brukeren, så jeg gjør det selv. Ikke endre andre tjenester på serveren, og ikke ta over porter som allerede er i bruk uten å spørre meg først.

Bytt ut domenet, kjør, og følg med mens den jobber.

Litt om drift

Én ting er verdt å vite før du setter dette i produksjon: API-containeren monterer Docker-socketen på verten. Det er slik den bygger og kjører appene dine som ordentlige containere — men det betyr også at den har full kontroll over verten gjennom den socketen. Kjør Openship på en boks du stoler på, og la være å eksponere API-et mot nett du ikke kontrollerer.

Utover det er vedlikeholdet lett. openship update tar oppgraderingen. Backup er innebygd og planlagt fra dashbordet. Sertifikater fornyer seg selv.

Prosjektet beskriver seg selv som produksjonsklart i kjernen og under aktiv utvikling — multi-node-klynger, load balancing i UI og private nettverk står på veikartet. Kjenn litt på det før du flytter noe forretningskritisk, men for de fleste små og mellomstore oppsett gjør den jobben i dag.

Kort oppsummert

Openship pakker det de store deploy-plattformene selger — push-to-deploy, automatisk TLS, databaser på et klikk, backup og logger — inn i noe du installerer på din egen VPS med én kommando. Du bytter en månedlig regning og en leverandøravhengighet mot et par timers oppsett og ansvaret for din egen boks.

For mange er det en god handel.

Trenger du en VPS å kjøre den på, har Webhuset det du trenger — så er bunnen klar fra dag én, og du bruker tiden på koden.