# veldhost > Managed EU web hosting and a data platform — PHP (WordPress, Laravel, > any PHP app), static sites and more runtimes as they land (see "Runtimes > and apps") — with domains, DNS on our own European nameservers, staging, > backups and monitoring; a SQL workbench over every site database, > MariaDB/PostgreSQL warehouses, ETL pipelines, scheduled jobs and > dashboards (see "Data platform"); and first-class access for AI agents: > a remote MCP server and a REST API. ## Runtimes and apps Generated from the app catalogue. The status is the truth; do not infer more. - Runtime: PHP (8.2, 8.3, 8.4, 8.5) — Available - Runtime: Static (nginx) — Available - Runtime: Node.js (22 LTS, 24) — Available - Runtime: Python — Planned - WooCommerce [Online shops] — Available: WordPress with WooCommerce and the Storefront theme installed and configured, EU-hosted. - PrestaShop [Online shops] — Available: The European open-source shop platform, installed with its CLI and ready for your catalogue. - Magento Open Source [Online shops] — On a Business plan: Needs a dedicated server with OpenSearch; we set it up on a Business plan. - WordPress [Websites, CMS & blogs] — Available: Installed in one click with object caching, image tooling and real cron. - Ghost [Websites, CMS & blogs] — Available: The Node.js publishing platform for newsletters and memberships, installed with its own database and your owner account. - Strapi [Websites, CMS & blogs] — Available: Headless CMS with a REST API, scaffolded on PostgreSQL with the admin panel built and your first administrator created. - Directus [Websites, CMS & blogs] — Available: A data platform and headless CMS on top of your own PostgreSQL database, bootstrapped with your administrator. - Static site [Websites, CMS & blogs] — Available: HTML, CSS and files — or the output of any static generator (Astro, Hugo, Eleventy, Jekyll). - Nextcloud [Business apps] — Available: Files, calendar and contacts on your own EU server. - Matomo [Business apps] — Available: Privacy-first web analytics you own, no cookie banner tricks. - n8n [Business apps] — Available: Workflow automation with hundreds of integrations, self-hosted in the EU on PostgreSQL with webhooks on your own address. - Umami [Business apps] — Available: Simple, GDPR-friendly website analytics, built from the pinned release on PostgreSQL with the default password rotated. - Laravel [Frameworks & custom code] — Available: Composer, migrations, a queue worker and the scheduler, deployed from git. - Any PHP app [Frameworks & custom code] — Available: Symfony, CodeIgniter, Slim or plain PHP 8.2–8.5 with Composer. - Any Node.js app [Frameworks & custom code] — Available: React, Vue, Svelte or plain Node — deployed from git with npm build and start. - Next.js [Frameworks & custom code] — Available: React with server rendering: the official starter built and running, ready to replace with your repository. - Nuxt [Frameworks & custom code] — Available: Vue with server rendering: the official starter built and running, ready to replace with your repository. - SvelteKit [Frameworks & custom code] — Available: Svelte with the Node adapter: the minimal starter built and running, ready to replace with your repository. - Astro [Frameworks & custom code] — Available: Static output served by nginx — build from git or upload the dist folder. - Astro (Node adapter) [Frameworks & custom code] — Available: Astro rendering on request with @astrojs/node: the minimal starter built and running, ready to replace with your repository. - Express / Node API [Frameworks & custom code] — Available: Any Node.js server that listens on a port. - Django / Flask [Frameworks & custom code] — Planned: Python runtime on the roadmap after Node.js. - Anything from git [Bring your own] — Available: Connect GitHub, GitLab or veldhost Git; we build and deploy on every push with one-click rollback. - [Full catalogue](https://veldhost.eu/apps): every runtime and app with its status - [Compare](https://veldhost.eu/compare): veldhost vs budget shared hosting, local hosts and DIY VPS - [veldhost vs TransIP](https://veldhost.eu/compare/transip): checked side-by-side comparison with TransIP (Dutch at /nl/compare/transip) - [veldhost vs Hostnet](https://veldhost.eu/compare/hostnet): checked side-by-side comparison with Hostnet (Dutch at /nl/compare/hostnet) - [veldhost vs Antagonist](https://veldhost.eu/compare/antagonist): checked side-by-side comparison with Antagonist (Dutch at /nl/compare/antagonist) - [veldhost vs Vimexx](https://veldhost.eu/compare/vimexx): checked side-by-side comparison with Vimexx (Dutch at /nl/compare/vimexx) - [veldhost vs Hostinger](https://veldhost.eu/compare/hostinger): checked side-by-side comparison with Hostinger (Dutch at /nl/compare/hostinger) - [Baltics](https://veldhost.eu/for/baltics): hosting for businesses in Latvia, Lithuania and Estonia Support languages: English, Dutch, Latvian. Production: Falkenstein and Nuremberg (Germany), on servers rented from Hetzner and operated by veldhost; no reseller, no US hyperscaler or CDN in the path. Company: a Dutch sole proprietorship in Enschede. Ordering is open (14-day free trial on every plan). ## For AI agents - [MCP server](https://manage.veldhost.eu/mcp): Streamable HTTP, OAuth 2.1 or personal token - [OAuth discovery](https://manage.veldhost.eu/.well-known/oauth-protected-resource/mcp): protected-resource metadata for the MCP server - [REST API spec](https://manage.veldhost.eu/api/v1/openapi.json): OpenAPI 3.1 - [How to connect an assistant](https://veldhost.eu/docs/connect-ai-assistant): Claude, ChatGPT and other MCP clients - ChatGPT: veldhost is not yet listed in ChatGPT's plugin directory. Add it with developer mode (Settings → Security and login → Developer mode, then Plugins → + → Connection: https://manage.veldhost.eu/mcp); sign-in is OAuth, no token. - [API reference](https://veldhost.eu/docs/api-reference): endpoints, scopes and examples - [MCP tool reference](https://veldhost.eu/docs/mcp-tools.md): every tool, its scope and whether it changes anything - [Ordering with an AI assistant](https://veldhost.eu/docs/ai-ordering.md): how an assistant proposes and the customer approves - [Scopes and permissions](https://veldhost.eu/docs/scopes-and-permissions.md): what each token scope allows and who can grant it - [All docs as Markdown](https://veldhost.eu/docs.md), and the full text in one file: [llms-full.txt](https://veldhost.eu/llms-full.txt) Agents can run a customer's hosting end to end: list sites, read health/logs/deploys/backups/traffic, deploy from git and decide CI/CD releases, change a site's environment variables, PHP or Node.js version and build steps, connect a domain, manage staging/cron/DNS, webhooks and (with the opt-in `data` scope) databases, warehouses, dashboards, pipelines and jobs. Agents can also ORDER, with the customer's approval: with the opt-in `billing` scope they propose a new site, email, a plan change or an add-on, the account's owners and billing members are emailed, and one of them approves it in veldhost. Nothing is ever bought by a token, and payment details are only ever entered on veldhost's own pages. Actions that cannot be undone (restoring a backup, enabling DNSSEC, dropping a warehouse database, approving a release) ask for the user's confirmation first. ## Docs Every article, also as Markdown (the .md links below): - [Move your DNS to veldhost](https://veldhost.eu/docs/move-your-dns-to-veldhost.md): Keep your domain at your registrar; point its DNS at us with your records copied first. - [Connect your own domain](https://veldhost.eu/docs/connect-your-domain.md): Point a domain you already own at your veldhost site. - [DNS records, explained simply](https://veldhost.eu/docs/dns-records-explained.md): What A, CNAME, MX and TXT records do — and which ones you actually need. - [Move an existing site to veldhost](https://veldhost.eu/docs/move-an-existing-site.md): Upload a backup, paste a link, or let us pull it from your old host — check the preview, then connect your domain. - [Upload your website](https://veldhost.eu/docs/upload-your-site.md): Publish your files from the browser, or with SFTP for bigger sites. - [Deploy from Git](https://veldhost.eu/docs/deploy-from-git.md): Connect a repository — veldhost Git, GitHub or GitLab — and deploy on every push. - [WordPress: your first steps](https://veldhost.eu/docs/wordpress-getting-started.md): Log in, make it yours, and keep it safe. - [WooCommerce: your first steps](https://veldhost.eu/docs/woocommerce-getting-started.md): What the one-click shop contains, your first login, updating, and what it is good for. - [PrestaShop: your first steps](https://veldhost.eu/docs/prestashop-getting-started.md): The back-office address, your first login, updating safely, and the plan it needs. - [Nextcloud: your first steps](https://veldhost.eu/docs/nextcloud-getting-started.md): What is set up for you, adding users and clients, and updating one version at a time. - [Matomo: your first steps](https://veldhost.eu/docs/matomo-getting-started.md): Sign in, add the tracking code to your site, and keep Matomo current. - [Scheduled tasks (cron jobs)](https://veldhost.eu/docs/cron-jobs.md): Run a command automatically on a schedule. - [Node.js apps: Next.js, Nuxt, SvelteKit and Express](https://veldhost.eu/docs/node-apps.md): Build command, start command, the PORT we hand you, static files and WebSockets. - [Ghost: your first steps](https://veldhost.eu/docs/ghost-getting-started.md): What the one-click install contains, your owner login, newsletters and how to update. - [Strapi: your first steps](https://veldhost.eu/docs/strapi-getting-started.md): Your administrator login, the API, where the settings live and how to update. - [Directus: your first steps](https://veldhost.eu/docs/directus-getting-started.md): Your administrator login, collections and files, the API and how to update. - [n8n: your first steps](https://veldhost.eu/docs/n8n-getting-started.md): Your owner login, webhooks on your address, the encryption key and how to update. - [Umami: your first steps](https://veldhost.eu/docs/umami-getting-started.md): Sign in, add a website, paste the tracking script and keep Umami current. - [Framework starters: Next.js, Nuxt, SvelteKit and Astro](https://veldhost.eu/docs/framework-starters.md): What the running starter is, how to replace it from git, and the start command each framework needs. - [Create an email address on your domain](https://veldhost.eu/docs/create-a-mailbox.md): hello@yourdomain in two minutes. - [Set up email on your phone and computer](https://veldhost.eu/docs/email-on-your-phone.md): The IMAP/SMTP settings for iPhone, Android, Outlook and co. - [Backups & one-click restore](https://veldhost.eu/docs/backups-and-restore.md): Restore points, "Back up now", downloads — and how to undo a bad day. - [Uptime, the status page and the SLA](https://veldhost.eu/docs/uptime-and-sla.md): What we measure, what we commit to per plan, and how service credits work. - [Security at veldhost](https://veldhost.eu/docs/security-at-veldhost.md): EU infrastructure, automatic patching, second-region backups, and securing your account. - [Reading your site logs](https://veldhost.eu/docs/site-logs.md): White screen? The reason is in the Logs tab — here is how to read it. - [Invite a team member](https://veldhost.eu/docs/team-members.md): Give your developer their own login — never share your password. - [Staging: a safe copy of your site](https://veldhost.eu/docs/staging-copy.md): Rehearse risky changes on an exact copy — your real site never notices. - [Switching PHP versions](https://veldhost.eu/docs/php-versions.md): What the PHP version means and how to change it safely. - [SSH, SFTP and database access](https://veldhost.eu/docs/ssh-sftp-access.md): Keys, FileZilla, and browsing your database with your own tools. - [API reference](https://veldhost.eu/docs/api-reference.md): Automate deploys, DNS, staging and backups with a personal API token. - [Connect your AI assistant](https://veldhost.eu/docs/connect-ai-assistant.md): Let Claude, ChatGPT, Cursor or any MCP-capable assistant run your hosting: sites, deploys, settings, domains, DNS and data. - [Ordering with an AI assistant](https://veldhost.eu/docs/ai-ordering.md): An assistant can propose a new site, email, a plan change or an add-on; you approve it in veldhost. Nothing is bought without you. - [Scopes and permissions for tokens and assistants](https://veldhost.eu/docs/scopes-and-permissions.md): What read, deploy, manage, dns, data and billing allow, and which team roles can grant each. - [MCP tool reference](https://veldhost.eu/docs/mcp-tools.md): Every tool the veldhost MCP server offers, the scope it needs and whether it changes anything. - [Databases: browse and query your site data](https://veldhost.eu/docs/databases.md): Browse every site database, run read-only SQL in the editor, save queries, and let your AI assistant do the same. - [Warehouse: a database of your own](https://veldhost.eu/docs/warehouse.md): Create MariaDB or PostgreSQL databases you can write to, import CSV and Parquet files, run writable SQL, and move a whole database in. - [Jobs & Pipelines: from raw tables to reports, on a schedule](https://veldhost.eu/docs/pipelines-and-jobs.md): Pipelines are SQL files that build warehouse tables; jobs run them, refresh dashboards and send notifications on a schedule, with a ledger of every run. - [Dashboards: charts over your data](https://veldhost.eu/docs/dashboards.md): Build Grafana-like dashboards over your site and warehouse databases, with time macros, variables and auto-refresh. - [Webhooks, Slack and Teams](https://veldhost.eu/docs/webhooks-and-integrations.md): Get deploys, outages, backups, incidents and invoices pushed to your own systems or a chat channel. - [Moving your site or database to veldhost](https://veldhost.eu/docs/moving-to-veldhost.md): Free assisted migration — what happens, what we need from you, and how we prove a database arrived intact. - [Billing, plans and domain renewals](https://veldhost.eu/docs/billing-and-plans.md): How plan changes, add-ons, renewals and cancellation work. ## Data platform (included in every plan, at the plan's warehouse tier) - [Data platform overview](https://veldhost.eu/data): databases, warehouse, jobs, pipelines and dashboards - [Databases](https://veldhost.eu/docs/databases): every site database (MariaDB and PostgreSQL) in a read-only SQL workbench — separate read-only login, read-only transaction, SELECT/WITH/ SHOW/EXPLAIN only; saved queries; CSV and Excel export. Standard offer: 1,000 rows and 30 s per query, 2,000 queries a day. - [Warehouse](https://veldhost.eu/docs/warehouse): writable MariaDB or PostgreSQL databases of the customer's own, one container per account sized by tier — Warehouse XS on Starter (512 MB, 5 GB, 2 databases), S on Pro (1 GB, 25 GB, 10), M on Business (2 GB, 75 GB, 20). Bigger tiers are flat add-ons from the Plans page in Manage: Warehouse M €12/month on Starter and Pro (included on Business), Warehouse L (4 GB, 200 GB, 50 databases) €29/month on any plan, extra disk €5/month per 100 GB block; prices ex VAT, annual billing = 10 months. CSV, gzip and Parquet imports up to 1 GB via EU object storage; whole-database migration in (MySQL/MariaDB/PostgreSQL) with row counts compared table by table. - [Jobs & Pipelines](https://veldhost.eu/docs/pipelines-and-jobs): a pipeline is SQL you can read (CREATE OR REFRESH TABLE ... AS SELECT ...); the platform derives the graph and lineage from it, previews the first rows before anything is written, and rebuilds or upserts each table on schedule. Jobs have ordered steps (pipeline, SQL, dashboard refresh, email/webhook, wait, condition) on a schedule, by hand or after another job, with a run ledger. Standard offer: 20 jobs and 20 pipelines, runs up to 15 min / 500,000 rows, schedules from 5 min (Business: 60 min / 5 million rows / every minute; Warehouse L: 60 min / 5 million rows). Job minutes a month included: 30 Starter, 120 Pro, 600 Business, 2,000 on Warehouse L. - [Dashboards](https://veldhost.eu/docs/dashboards): Grafana-like panels (time series, bar, stat, gauge, table, pie) over site or warehouse tables; up to 50 dashboards of 24 panels. - Pricing: Databases, dashboards, pipelines and the plan's warehouse tier are included in the plan price. Job minutes above the included allowance are metered at €0.02 per minute, billed per second, under a spend cap the customer sets (€10/month by default, €50 on Business; alerts at 50/80/100 %, hard stop: scheduled runs skipped, manual runs refused) — nothing above the cap is ever billed, runs that fail for a platform reason are never billed, and the overage lands as one line on the next invoice. Nothing else in the data platform is metered. Limits are per-account and raised on request for a fee. Starter has the same workbench and dashboards as Pro and Business, with Warehouse XS. ## Product - [Plans and pricing](https://veldhost.eu/plans): Starter, Pro and Business, monthly or annual - [Managed web hosting for businesses](https://veldhost.eu/webhosting): from €5/month ex VAT, free migration in, weekly backups on every plan, daily with an add-on - [Business email on your own domain](https://veldhost.eu/email): email only from €3/month ex VAT with one mailbox, €2 per extra mailbox; webmail, IMAP/SMTP, calendar and contacts; website and DNS can stay elsewhere - [Managed WordPress hosting](https://veldhost.eu/wordpress-hosting): one-click WordPress or WooCommerce, core security releases installed automatically by WordPress (plugins and themes stay the customer's), weekly backups, staging - [Free website migration](https://veldhost.eu/move-to-us): we move the site, email and DNS for you - [Platform overview](https://veldhost.eu/platform): everything a managed site gets - [Customer docs](https://veldhost.eu/docs): setup guides and reference - [Agent-ready hosting](https://veldhost.eu/ai): what AI assistants can do on veldhost ## For procurement, security and legal reviews - [Trust centre](https://veldhost.eu/trust): start here for vendor evaluation - [Vendor profile](https://veldhost.eu/trust/vendor-profile): supplier fact sheet, also as [JSON](https://veldhost.eu/trust/vendor-profile.json) and [text](https://veldhost.eu/trust/vendor-profile.txt) - [Security questionnaire](https://veldhost.eu/trust/security-questionnaire): pre-answered, also as [text](https://veldhost.eu/trust/security-questionnaire.txt) - [Security overview](https://veldhost.eu/security): how the platform is protected - [Digital sovereignty](https://veldhost.eu/sovereignty): EU operation and NIS2 alignment - [Data Processing Agreement](https://veldhost.eu/dpa): with the sub-processor register - [GDPR hosting guide](https://veldhost.eu/gdpr-hosting): what the GDPR asks of a host (Art. 28, 32, 33, 44-49), a website checklist, and what veldhost signs; general information, not legal advice - [Hosting SLA](https://veldhost.eu/sla), [Terms](https://veldhost.eu/terms), [Privacy](https://veldhost.eu/privacy): the contract documents - [Status page](https://veldhost.eu/status): live uptime and incidents Certifications NOT held (do not infer them): ISO 27001, SOC 2. GDPR DPA published; NIS2-aligned, not certified; card data handled by Stripe. --- # Move your DNS to veldhost > Keep your domain at your registrar; point its DNS at us with your records copied first. Source: https://veldhost.eu/docs/move-your-dns-to-veldhost You do not have to move your domain to veldhost to host with us. The normal way in is to **keep the domain at the registrar you already use** and point its DNS at our nameservers. The portal's *Move your DNS to veldhost* wizard (Domains → *Use a domain you already own*) does that in five steps, and the order of those steps is the whole point: your current records are copied here **before** anything changes, so your website and email carry on without a gap. ## Before you start - You need a site on veldhost. We hold DNS for domains that have somewhere to point; if you have not created a site yet, do that first (it takes a few minutes) and come back. - Have the login for your registrar to hand — the company that sends you the yearly renewal invoice for the domain. Step 4 happens there. - Nothing in the wizard talks to your registrar. The one change that moves things is made by you, in step 4, and until then your domain is untouched. ## Step 1 — Which domain? Type the domain as people see it (`yourbrand.com`, no `www`). If one of your sites should show on it, pick the site; if you want to keep your website where it is for now, leave that at "not yet". We then look the domain up on the public internet — the same resolvers your visitors use, never our own nameservers — and tell you who answers for it today and whether DNSSEC is switched on at your current provider. ## Step 2 — The zone we would serve This is a preview of the records we found and what we would write, each with a reason. We ask for the names almost every domain uses — the apex and `www`, `mail`, `shop`, `blog`, `api`, `app`, `cdn`, `ftp`, the autodiscovery names — plus MX, SPF, DMARC, the common DKIM selectors, CAA and the phone/chat/calendar SRV records. Each record goes through the same rules as the DNS editor, so a broken record in the list is refused with a reason rather than copied. If you chose a site, its records are laid over the top: the apex and `www` point at your veldhost site instead of wherever they point today, and the preview says so. If the domain already has a mailbox on veldhost, the mail records are included too — with your existing SPF *merged*, never replaced. Two things nobody can see from outside a domain: DKIM keys under an unusual selector, and subdomains we did not guess. The preview names what it asked for, so you can check anything else at your current provider and add it in the DNS editor afterwards — or send us your current records and we will do it. ## Step 3 — Create the zone here One button writes exactly the preview you read into *our* copy of your DNS. Your live domain is still answered by your current provider; nothing has changed for anyone yet. If a record changed between the preview and the click, you get the updated preview instead of a surprise. ## Step 4 — Change the nameservers at your registrar We look up who your domain is registered with and show the steps for that registrar — GoDaddy, Namecheap, TransIP, Hostnet, Mijndomein, Versio, one.com, IONOS, OVH, Openprovider and more, with a general guide if yours is not on the list. Enter these two nameservers, replacing everything that is there: ``` ns1.veldhost.eu ns2.veldhost.eu ``` Replace **both** entries and leave none of the old ones behind; a mixed set fails intermittently, which is harder to notice than failing outright. **If DNSSEC is on at your current provider**, the wizard says so and this needs one extra step, first: turn DNSSEC off at your registrar (remove the DS record) and wait a day *before* changing nameservers. The DS at the registry vouches for the keys your *current* provider signs with; change nameservers while it is there and resolvers that check signatures refuse your domain. Once the domain is here you can turn DNSSEC on again from the DNS page — we sign the zone and show you the new DS to publish. If the domain is registered *with veldhost*, there is no other registrar to sign in to: the wizard sends you to the domain's own page, where the switch is one click (and, if DNSSEC is on, *Prepare to move* handles the DS for you). ## Step 5 — Is it live? The last step watches for your change to land. Press *Check again* whenever you like, or close the page: we check every ten minutes for three days and email you the moment public resolvers answer with our nameservers. It reaches most people within a couple of hours and everyone within a day. Seeing the delegation land is also how we know the domain is yours — only whoever controls it at the registrar could have made that change. Once it is live, connect the domain to your site on its **Domain** tab if you have not already; the certificate is issued automatically. Everything else — records, DNSSEC, exports — is in the [DNS editor](https://veldhost.eu/docs/dns-records-explained). ## Do I have to move the registration too? No — and we would rather you didn’t. veldhost is not a registrar shopfront: your domain stays where you bought it, in your name, and only its DNS points here. That is the whole arrangement, and it is the one that leaves you least tied to us. If you would genuinely rather we held the registration, or you need a name you don’t own yet, [ask us](https://veldhost.eu/contact) and we will do it with you. And if you ever leave, everything here — files, database, DNS export — is self-service. ## Over the API Step 2 is available to scripts and assistants as a dry run: `POST /api/v1/dns/zones/probe` (dns scope) returns the same plan, the detected registrar and its instructions, and a `continue_url` where a person creates the zone. The MCP tool is `probe_domain_dns`. Neither writes anything. --- # Connect your own domain > Point a domain you already own at your veldhost site. Source: https://veldhost.eu/docs/connect-your-domain Your site starts on a free `yourname.apps.veldhost.eu` address. Connecting your own domain takes one form and one change at your registrar — and the domain itself stays registered where it is. **Have email or other records on the domain already?** Use [Move your DNS to veldhost](https://veldhost.eu/docs/move-your-dns-to-veldhost) first: it reads what your domain publishes today, copies it into your veldhost DNS before anything changes, and gives you registrar-specific nameserver instructions. Then come back here to connect the site. ## 1. Add the domain to your site 1. Open your site in the portal → **Domain** tab. 2. Enter your domain (e.g. `example.com`) and save. We issue the SSL certificate automatically. ## 2. Point the domain at us Two options — the Domain tab shows both with your exact values: - **Easiest:** switch your domain's nameservers to ours (`ns1.veldhost.eu` and `ns2.veldhost.eu`). We then manage all records for you, and email/DNS features work out of the box. The [move-your-DNS wizard](https://veldhost.eu/docs/move-your-dns-to-veldhost) copies your existing records first and shows the exact steps for your registrar. - **Keep your current DNS:** add the A records shown on the tab at your registrar. ## Domains registered with veldhost If you registered the domain through us, you don't go anywhere else: open **Domains → your domain** and you can see the nameservers actually on file at the registry (and what public resolvers are answering right now), switch between our nameservers and your own, manage DNSSEC, unlock the domain for transfer, and renew it. ## Using your own nameservers You can point a domain registered with us at any DNS provider — pick *Use my own nameservers* on the domain page. We keep your zone and all its records here, so switching back is one click and nothing has to be rebuilt. One thing to know if DNSSEC is on: the registry currently vouches for the key *we* sign your zone with, so moving the domain before that record is withdrawn would make security-checking resolvers refuse it. The page handles this for you — use *Prepare to move away*, which turns DNSSEC off (your site carries on working exactly as before) and tells you the moment the switch is safe, normally 24 hours later. If your new provider also does DNSSEC, paste the DS record they give you and we'll publish it alongside ours, which removes the wait entirely. Nameservers that live under the domain itself (like `ns1.yourdomain.com`) need extra records at the registry that we don't set up automatically — [ask us](https://veldhost.eu/contact) and we'll arrange it. ## How long does it take? Usually minutes; nameserver changes can take up to a day to reach everyone. Your old site keeps working until the switch completes — there's no gap. --- # DNS records, explained simply > What A, CNAME, MX and TXT records do — and which ones you actually need. Source: https://veldhost.eu/docs/dns-records-explained DNS is your domain's address book. Four record types cover almost everything: - **A** — "this name lives at this server address". Your website needs one for `example.com` and usually one for `www`. - **CNAME** — "this name is an alias of another name". Handy for subdomains. - **MX** — "email for this domain goes here". Created automatically when you enable email with us. - **TXT** — free-form notes machines read: SPF/DKIM/DMARC (email trust) and ownership checks live here. ## Editing records If your domain uses our nameservers, edit everything under **DNS** in the portal. Changes go live in seconds. If a record exists twice, delete the stale one — the newest is not automatically preferred. ## Rules of thumb - Don't delete records you don't recognise while email works — MX/TXT often look obscure and matter most. - TTL = how long the internet caches a record. Lower it before a planned move, raise it after. ## Export and import a zone file Every zone has a **Download zone file** button on its DNS page. It gives you a standard BIND zone file (RFC 1035) — the same format BIND, PowerDNS, Knot and most DNS hosts read — with every record exactly as our nameservers serve it. The SOA and the apex NS lines are included as comments: they are managed by us and would be ignored on import anyway. Keep a copy before a big change, or take it with you if you ever move your DNS elsewhere. Going the other way, paste or upload a zone file (up to 256 KB) into **Import a zone file** at the bottom of the same page. You always get a preview first: what would be *added*, what would be *updated*, what is *already in place*, and what we *refuse* — with the reason next to each line, for example an unsupported record type or a value that does not pass the same checks the editor applies. Nothing is written until you confirm. - Imported: A, AAAA, CNAME, MX, TXT, SRV, CAA, and NS records for subdomains. SOA and apex NS lines are skipped with a note. - An import only adds and updates. Records already in your zone that the file does not mention are left alone — it never deletes. - Long TXT values (DKIM keys) are split into 255-character strings automatically; two files that split the same value differently are recognised as the same record. - Exporting a zone and importing the same file back changes nothing — that is the check we run on it. The same works over the API: `GET /api/v1/dns/{zone}/export` returns the file, `POST /api/v1/dns/{zone}/import` with `{"zone_file": "...", "dry_run": true}` returns the plan as JSON and, with `dry_run: false`, applies it. Under **Account → Export everything** you can also download every zone file on your account in one zip, together with your domain list and restore points. --- # Move an existing site to veldhost > Upload a backup, paste a link, or let us pull it from your old host — check the preview, then connect your domain. Source: https://veldhost.eu/docs/move-an-existing-site You do not have to start from scratch. A site you already run somewhere else moves into a veldhost site in a few minutes, and you stay in control of every step: the copy lands on a **preview address** first, and your domain only moves when you say so. ## Before you start 1. Create the site it will land in (**Sites → New site**). Pick **WordPress** if it is a WordPress site — the import then reuses the database and the admin protection that come with it. For plain PHP or HTML sites pick **PHP** or **Static**. 2. Open the new site's page → **Deploys** tab → **Move an existing site here**. ## Three ways to bring it over Pick whichever you have. Each one is enough on its own. ### 1. Upload a backup Any of these works, straight from your computer: - **All-in-One WP Migration** — the `.wpress` export. - **Duplicator** — the package `.zip` (choose ZIP, not DAF, when you build it; the `installer.php` is not needed). - **UpdraftPlus** — the whole set of files from one backup (`-db`, `-plugins`, `-themes`, `-uploads`, `-others`), selected together. - **A plain archive** — a `.zip` or `.tar.gz` of your web root (`public_html`, `htdocs`…), plus a `.sql` export of the database if the site has one (phpMyAdmin → Export works). Big files are fine: the browser sends them in pieces, so a slow connection or a 2 GB media folder is not a problem. Just keep the tab open until the upload finishes. ### 2. Paste a download link If the backup already sits somewhere online — your old host's backup page, Dropbox, Google Drive — paste a direct download link and we fetch it. The link has to download the file when opened in a browser (for Dropbox, make it end in `?dl=1`). ### 3. Pull from your old host Enter the SFTP or FTP details from your old host (the same ones FileZilla would use) and, for database sites, the database name, user and password from your old `wp-config.php`. We copy the files and export the database ourselves. Your old host is only ever read, never changed. These details are encrypted, handed to the copy job exactly once, and deleted the moment it starts. They are never shown again — not even to us. ## What happens next 1. We take a **restore point** of the site as it is now, so the move can always be undone. 2. The files are unpacked into the site's web root and the database into its own MariaDB. Anything that would only work on the old host — caching drop-ins, a hard-coded site address — is cleared. 3. For WordPress, every stored address is rewritten to the preview address (a serialisation-safe `search-replace`), so the preview does not bounce you back to the old host. 4. The page follows along live. When it says **Preview ready**, open the preview and click around: pages, images, the admin login. ## Going live Happy with the preview? **Connect your domain** from the site's Domain & Email tab. The wizard copies your existing DNS — including the mail records, so email keeps flowing — before anything is pointed at us. For WordPress, the addresses are rewritten once more, from the preview address to your real domain, the moment the domain is live. Visitors keep reaching your old host until that switch. Once you are live here, cancel the old plan whenever you like. ## If something is off - **The import failed** — the reason is in the log on the import page. The usual ones: the archive had no database, the .sql file was not a complete export, or a link returned a web page instead of a file. Fix the input and try again; each attempt is separate and your site is untouched until one succeeds. - **The preview looks wrong** — a plugin that depended on the old host (a caching or CDN plugin, for example) is the most common cause. Deactivate it in the WordPress admin. - **You would rather we did it** — the [free assisted migration](https://veldhost.eu/move-to-us) is still here. It goes into a queue an engineer works through, so it is the slower path, but there is no catch. --- # Upload your website > Publish your files from the browser, or with SFTP for bigger sites. Source: https://veldhost.eu/docs/upload-your-site Two ways to publish, both from your site's **Files** tab. ## Browser upload (easiest) 1. Zip your website folder on your computer (the folder that contains `index.html` or your app). 2. Files tab → choose the .zip → **Upload & publish**. We unpack it and your site is live immediately. Uploading replaces what's currently live. For framework apps (Laravel & co.), pick the *code* upload and press **Build & deploy** afterwards — that installs dependencies and runs your migrations. ## SFTP (big sites, many files) 1. Access tab → turn on **SSH access** and add your public key. 2. Connect with FileZilla/Cyberduck using the host, port and username shown there. 3. Upload into the folder shown as your web root. ## Which should I use? Under ~200 MB and occasional: browser. Anything bigger, media-heavy or frequent: SFTP — or better, [deploy from Git](https://veldhost.eu/docs/deploy-from-git). --- # Deploy from Git > Connect a repository — veldhost Git, GitHub or GitLab — and deploy on every push. Source: https://veldhost.eu/docs/deploy-from-git Connect a repository once and ship by pushing code. Works with veldhost Git, GitHub, GitLab, or any git host. ## Set it up 1. Site → Files tab → **Deploy from Git**. 2. Enter the repository: - `you/repo` for veldhost Git, - `https://github.com/you/repo` for public repos, - `git@github.com:you/repo.git` for private ones. 3. Pick the branch and press **Deploy from Git**. We clone, build the frontend (npm), install dependencies (Composer), run migrations and publish. ## Private repositories After your first attempt the card shows your site's **deploy key**. Add it in your repo settings (GitHub: Settings → Deploy keys; GitLab: Settings → Repository → Deploy keys), then deploy again. Read-only, one key per site. ## Deploy on every push The card also shows a **webhook URL + secret**. Add them as a push webhook in your repo and every push to your chosen branch deploys automatically — no portal visit. --- # WordPress: your first steps > Log in, make it yours, and keep it safe. Source: https://veldhost.eu/docs/wordpress-getting-started Picked the WordPress stack? Your site came with WordPress already installed and running. ## First login: two logins in a row 1. Your site page in the portal shows the admin address (`/wp-admin/`), username and a generated password — we display it for 7 days, so save it now. 2. Open `/wp-admin/`. Your **browser** asks for a login first: that is the **admin gate**, a small extra lock we put in front of the WordPress login (HTTP basic auth). Its username and password are on the **Settings** tab of your site page ("Admin gate" — press *Reveal password*). 3. Then the familiar WordPress login page appears: sign in with the WordPress username and password from the first step, go to **Users → Profile** and set your own password. Why two? Bots try every WordPress login page on the internet, all day. The gate is checked at our edge, before the request reaches WordPress, so those scripts never get to your login page or your plugins. Your visitors never see it, and it leaves `admin-ajax.php` (used by forms and shop plugins) and the scheduled tasks untouched. You can change the gate's username and password, regenerate it, or turn it off on the Settings tab — every reveal of the password is written to your account's audit log. ## What is blocked for you - `/wp-json/batch/v1` — the WordPress "batch" REST endpoint is blocked on every WordPress site, whatever the method. It lets one request carry many, was recently used in the wild to slip past rate limits and plugin checks, and nothing you install needs it. - `/xmlrpc.php` — the old remote-publishing interface answers 403. It is a favourite for password guessing (hundreds of attempts in one call) and modern apps use the REST API instead. If a plugin insists on it, ask support. - `/wp-login.php` is also rate-limited per address underneath the gate, as a second layer. ## Make it yours - **Appearance → Themes** — pick a look; the theme customizer previews before publishing. - **Pages** — your home/about/contact live here. - **Settings → General** — site title and language. ## Keeping it healthy - WordPress installs its own core security releases automatically, and we run real scheduled tasks (no traffic-dependent cron). **Plugins are yours**: fewer is better, update them, delete what you don't use. - Before experimenting, press **Back up now** on the Files tab — restoring takes one click. - If the site white-screens after a plugin update, check the **Logs** tab, then restore. --- # WooCommerce: your first steps > What the one-click shop contains, your first login, updating, and what it is good for. Source: https://veldhost.eu/docs/woocommerce-getting-started Picked WooCommerce? Your site came with WordPress, WooCommerce and the Storefront theme installed and configured — no wizard to click through. ## What gets installed - **WordPress** (latest) with object caching, image tooling and real cron, exactly like our WordPress install. - **WooCommerce** (latest stable) and the **Storefront** theme, activated. - The Shop, Cart, Checkout and My account pages, and pretty permalinks so product URLs read `/product/your-item/`. - EU-friendly defaults: currency **EUR**, prices entered and shown **including VAT**, comma as decimal separator, kilograms and centimetres, guest checkout on, WooCommerce usage tracking and marketplace suggestions off. - **No demo products** — the catalogue is empty and yours. ## First login 1. Your site page in the portal shows the admin address (`/wp-admin/`), the username and a generated password — we display it for 7 days, so save it now. 2. Log in, then go to **Users → Profile** and set your own password. 3. Add your first product under **Products → Add New**, and a payment method under **WooCommerce → Settings → Payments** (Mollie, Stripe and PayPal have free plugins). 4. Set your store address and tax rates under **WooCommerce → Settings → General** and **Tax** — we do not guess your country. ## Updating - WordPress applies its own security releases. Update WooCommerce, Storefront and plugins from **Dashboard → Updates**; when WooCommerce asks for a database update afterwards, run it. - Before a big update press **Back up now** on the Files tab — restoring takes one click. Or rehearse it on a [staging copy](https://veldhost.eu/docs/staging-copy). ## Limits - The Starter plan (768 MB) runs a small shop comfortably; a large catalogue, many plugins or a page builder want Pro (2 GB). - We keep the platform fast and patched; the plugins you add are yours to keep updated. Fewer is better. --- # PrestaShop: your first steps > The back-office address, your first login, updating safely, and the plan it needs. Source: https://veldhost.eu/docs/prestashop-getting-started Picked PrestaShop? Your site came with PrestaShop installed from the current stable release, ready for your catalogue. ## What gets installed - **PrestaShop 9** (latest stable, PrestaShop's own "classic" package, checksum verified) on PHP 8.4 with its own MariaDB database in your container. - The shop name you gave the site, English as shop language, SSL on, friendly URLs on, and **no demo products**. - The back office in a **randomly named folder** (for example `/admin745…/`) — the standard PrestaShop protection against automated attacks. The installer folder is removed. - nginx rules straight from PrestaShop's documentation: image rewrites, the web-service API under `/api/`, source folders blocked. ## First login 1. Your site page in the portal shows the back-office address, the login (your email address) and a generated password — we display it for 7 days, so bookmark the address and save the password now. 2. Log in, click your name top right and set your own password. 3. Set your country, currency and VAT under **International → Localization** — the shop starts with Dutch settings if we could not tell. 4. Add products under **Catalog → Products**, and a payment module under **Payment → Payment Methods**. ## Updating - Use the **1-Click Upgrade** module from the back office (Modules → Module Manager). Always press **Back up now** on the Files tab first — a failed PrestaShop upgrade is much easier to restore than to repair. - PrestaShop 9 supports PHP 8.1–8.5; keep the site's PHP version within that range on the PHP tab. ## Limits - PrestaShop needs 1 GB of memory, so it is offered on the Pro plan and up. - Module and theme purchases from PrestaShop Addons are yours; we do not install or support third-party modules. --- # Nextcloud: your first steps > What is set up for you, adding users and clients, and updating one version at a time. Source: https://veldhost.eu/docs/nextcloud-getting-started Picked Nextcloud? Your site came with Nextcloud installed and configured on your own EU server. ## What gets installed - **Nextcloud** (latest stable release, verified against Nextcloud's published checksum and PGP signature) with its own MariaDB database in your container. - Your data folder **outside the web root**, APCu and Valkey (Redis-compatible) caching and file locking, a real cron job every 5 minutes, HTTPS enforced, and nginx rules from Nextcloud's own documentation (CalDAV/CardDAV discovery included). - One admin account; no users, groups or extra apps yet. ## First login 1. Your site page in the portal shows the sign-in address, the `admin` username and a generated password — we display it for 7 days, so save it now. 2. Log in, then set your own password under **Settings → Security**. Add users under **Settings → Users**. 3. Install Calendar, Contacts, Talk or Office from the **Apps** menu, and connect the desktop and mobile clients with your site address. 4. To send invitations and password resets, configure an outgoing mail server under **Settings → Basic settings** (a veldhost mailbox works). ## Updating - Update from **Settings → Administration → Overview** with the built-in updater, one major version at a time. Press **Back up now** on the Files tab first — the backup covers files, data folder and database. - Nextcloud checks its own security and configuration under Administration → Overview; the warnings you see there are yours to act on. ## Limits - Nextcloud needs 1 GB of memory, so it is offered on the Pro plan and up. Storage counts against your plan's disk; large photo libraries want the Business plan. - Uploads up to 512 MB per file through the browser; the desktop client chunks larger files. --- # Matomo: your first steps > Sign in, add the tracking code to your site, and keep Matomo current. Source: https://veldhost.eu/docs/matomo-getting-started Picked Matomo? Your site came with Matomo installed and configured — privacy-first analytics you own. ## What gets installed - **Matomo** (latest stable release, verified against Matomo's PGP signature) with its own MariaDB database in your container. - One website already registered (your site address), **IP anonymisation** and **Do-Not-Track** respected from the start, HTTPS enforced. - Report archiving from a real cron job every hour (browser-triggered archiving is off, so pages stay fast), and nginx rules from Matomo's own reference configuration — only Matomo's entry points can run, its configuration is unreachable from the web. ## First login 1. Your site page in the portal shows the sign-in address, the `admin` username and a generated password — we display it for 7 days, so save it now. 2. Log in, then set your own password under **Administration → Personal → Settings**. 3. Copy the tracking code from **Administration → Websites → Tracking code** into the site you want to measure — your veldhost WordPress site, for instance, with the free "Matomo Analytics" WordPress plugin or by pasting the snippet. 4. Add more websites under **Administration → Websites → Manage**. ## Updating - Update from **Administration → System → Update** when Matomo announces a new version. Press **Back up now** on the Files tab first. - Reports for the last hour arrive with the next archiving run; that is normal. ## Limits - The Starter plan (768 MB) is fine for a handful of sites with moderate traffic; many sites or millions of page views a month want Pro or Business. - Matomo's paid premium plugins are yours to buy; we do not install or support them. --- # Scheduled tasks (cron jobs) > Run a command automatically on a schedule. Source: https://veldhost.eu/docs/cron-jobs Scheduled tasks run a command automatically — cleanups, imports, queue processing. Site → **PHP** tab → *Scheduled tasks*. ## The schedule field Five values: minute, hour, day-of-month, month, weekday. `*` means "every". ``` */5 * * * * every 5 minutes 0 3 * * * daily at 03:00 0 8 * * 1 Mondays at 08:00 ``` ## The command Commands start with `php` or `wp` and run inside your site directory as your app user: ``` php artisan queue:work --stop-when-empty php scripts/cleanup.php wp post list --post_status=draft ``` Up to 5 jobs per site. Changes go live within a minute. Output is discarded — log to a file from your script if you need history, and remember the [Logs tab](https://veldhost.eu/docs/site-logs) shows PHP errors your job throws. --- # Node.js apps: Next.js, Nuxt, SvelteKit and Express > Build command, start command, the PORT we hand you, static files and WebSockets. Source: https://veldhost.eu/docs/node-apps A **JavaScript app** site runs your own Node.js server: Next.js, Nuxt, SvelteKit, Express, or anything else that listens on a port. We build it from Git, start it as a supervised service and put nginx in front. This article covers what your app must do, and what we do for it. ## How it runs - **Node.js 22 or 24** (long-term support builds), switchable on the site page under Advanced → **Node.js**. - Your app is started by the system service manager as its own user, restarted if it crashes, and given a memory limit that fits your plan. - nginx listens on the outside. Anything in your project's `public/` folder is served straight from disk; every other request — pages, API routes, WebSockets — is proxied to your app. - TLS, your domain, backups and monitoring work exactly as for every other site. ## Deploying Connect a repository under Publish → **Deploy from Git** (see [Deploy from Git](https://veldhost.eu/docs/deploy-from-git)). On every deploy we: 1. run your **install command** (`npm ci` unless you set one) and your **build command** (`npm run build` when your package.json has a `build` script) in a separate build container; 2. copy the built project — without `node_modules` — into your site; 3. install production dependencies there with your site's own Node version (`npm ci --omit=dev`); 4. restart your app and wait for it to answer on its port. A deploy only counts as done once it does — a broken start command or a missing dependency fails the deploy and keeps the log for you to read. ## The start command By default we run `npm start` if your package.json defines it, otherwise `node server.js` or `node index.js`. When your framework needs something else, set it on the site page under Advanced → Node.js → **Start command**: | Framework | Build command | Start command | | --- | --- | --- | | Next.js | `npm run build` | `npm start` (the default) | | Nuxt | `npm run build` | `node .output/server/index.mjs` | | SvelteKit (adapter-node) | `npm run build` | `node build` | | Express / plain Node | usually none | `node server.js` (the default) | The command runs from your project root, with your site's Node version first on the `PATH`. ## The PORT environment variable Your app **must listen on the port in `process.env.PORT`** (we set it to 3000) and on `127.0.0.1` or all interfaces — nginx connects to it locally. Next.js, Nuxt and SvelteKit's Node adapter read `PORT` by themselves; in Express it is one line: ``` app.listen(process.env.PORT || 3000); ``` We also set `NODE_ENV=production` and a sensible V8 heap size for your plan. Add your own variables — API keys, database URLs — under Advanced → **Environment variables**; they are written to the service's environment and your app is restarted, so it sees them on the next request. If your app talks to the managed database, the `DB_*` variables are already there: read them with `process.env.DB_HOST` and friends. ## Behind a proxy Requests reach your app over plain HTTP from nginx, with the real details in headers: `X-Forwarded-Proto` (`https`), `X-Forwarded-For`, `X-Real-IP` and `X-Forwarded-Host`. Tell your framework to trust them so it builds https:// links and sees the visitor's address — in Express, `app.set('trust proxy', 1)`; Next.js and Nuxt handle it out of the box. ## Static assets and WebSockets Put files that never change — images, fonts, downloads — in `public/`: nginx serves them without waking your app and adds a week of browser caching. Framework asset routes (`/_next/static`, `/_nuxt`) are served by your app as usual. WebSocket upgrades are passed through, so Socket.IO, live reload or a chat feature need no extra setup. ## When something breaks The [Logs tab](https://veldhost.eu/docs/site-logs) shows your app's own output (everything it prints to the console) newest first — a failed start is right at the top. Common causes: the app listens on a fixed port instead of `PORT`, a dependency is in `devDependencies` but needed at runtime, or the start command points at a file the build did not produce. Fix, push, deploy again. --- # Ghost: your first steps > What the one-click install contains, your owner login, newsletters and how to update. Source: https://veldhost.eu/docs/ghost-getting-started Picked Ghost? Your site came with Ghost installed on the Node.js runtime — the publishing platform for blogs, newsletters and memberships. ## What gets installed - **Ghost 6** from the official npm package (pinned; npm checks every file against the registry's published checksum), running as a systemd service on Node.js 22 with its own **MariaDB** database in your container. - Your **owner account** (the email address on your veldhost account), the publication named after your site, the Casper theme, and `content/` for themes, images and files next to the code. - Ghost's settings live in `config.production.json` in the site's code root (Files tab): the public address, the database and the mail transport. ## First login 1. Your site page in the portal shows the sign-in address (`/ghost/`), your login email and a generated password — we display it for 7 days, so save it now. 2. Sign in, then set your own password under **Settings → Staff → your profile**. 3. Write your first post; set the publication title, description and logo under **Settings → General**. 4. Newsletters and paid memberships need an email provider (Ghost uses Mailgun for bulk mail) and Stripe — connect both under **Settings → Email newsletter** and **Settings → Membership**. Transactional mail (invites, password resets) needs a `mail` transport in `config.production.json`. ## Updating - Press **Back up now** on the Files tab first. - Change the `ghost` version in `package.json` (Files tab) to the release you want, then run a deploy on the Deploy tab: it runs `npm install`, restarts the app, and Ghost migrates its database on start. - Ghost majors need a matching Node.js major; the Node card on your site page switches it. ## Limits - Ghost needs 1 GB of memory, so it is a Pro-or-higher app; the install itself briefly borrows more memory for `npm install`, which we arrange automatically. - Ghost supports MySQL 8 officially; our container database is MariaDB, which Ghost runs on today (we exercise every release on it before we offer it), but a future Ghost release may drop it — we will say so here first. --- # Strapi: your first steps > Your administrator login, the API, where the settings live and how to update. Source: https://veldhost.eu/docs/strapi-getting-started Picked Strapi? Your site came with Strapi 5 scaffolded and built on the Node.js runtime — a headless CMS: you model content in the admin panel and read it through an API from any front end. ## What gets installed - **Strapi 5** scaffolded with the official `create-strapi-app` (pinned, TypeScript, no example data), its admin panel built, running as a systemd service on Node.js 22 with its own **PostgreSQL** database in your container. - Your **administrator** (the email address on your veldhost account) registered as the first admin. - Settings live in `.env` in the site's code root (Files tab): the database, the app keys and the public address. `config/server.ts` binds the app to the port we hand it, behind our proxy. ## First login 1. Your site page shows the sign-in address (`/admin`), your login email and a generated password — we display it for 7 days, so save it now. 2. Sign in, then set your own password under your **profile** (top left). 3. Create your first content type in the **Content-Type Builder**, add an entry in the **Content Manager**, and open **Settings → Users & Permissions → Roles → Public** to allow `find` on it — it is then readable at `/api/`. 4. Uploads go to `public/uploads` and are served straight from disk. ## Updating - Press **Back up now** on the Files tab first. - Bump the `@strapi/*` versions in `package.json` (Files tab), then run a deploy: it runs `npm install` and `npm run build` (the admin panel), restarts, and Strapi migrates its database on start. - Rebuilding the admin panel needs about 1.5 GB for a minute; on the Pro plan that fits. ## Limits - Strapi needs 1 GB of memory (Pro or higher). The first install borrows more memory for the build automatically. - Strapi Cloud features and the Enterprise edition are Strapi's own products; the install is the open-source Community edition. --- # Directus: your first steps > Your administrator login, collections and files, the API and how to update. Source: https://veldhost.eu/docs/directus-getting-started Picked Directus? Your site came with Directus installed on the Node.js runtime — a data platform and headless CMS that wraps your PostgreSQL database in an admin app and an instant API. ## What gets installed - **Directus** from the official npm package (pinned; checksums verified by npm), running as a systemd service on Node.js 22 with its own **PostgreSQL** database in your container, schema created by `directus bootstrap`. - Your **administrator** (the email address on your veldhost account), `uploads/` for files and `extensions/` for your own extensions next to the code. - Settings live in `.env` in the site's code root (Files tab): the database, the secret, the public address and the storage location. Telemetry is off. ## First login 1. Your site page shows the sign-in address (`/admin/login`), your login email and a generated password — we display it for 7 days, so save it now. 2. Sign in, then set your own password under **User Directory → your profile**. 3. Create a collection under **Settings → Data Model**, add fields and items; the REST API answers at `/items/` and GraphQL at `/graphql` as soon as a role may read it (**Settings → Access Control**). 4. Files uploaded in the **File Library** are stored in `uploads/` and included in your backups. ## Updating - Press **Back up now** on the Files tab first. - Bump the `directus` version in `package.json` (Files tab), then run a deploy: it runs `npm install` and restarts; Directus applies its database migrations on start. ## Limits - Directus needs 1 GB of memory (Pro or higher). - Reset mails and flows that send email need an `EMAIL_TRANSPORT` in `.env`; until then, ask support to reset a password. --- # n8n: your first steps > Your owner login, webhooks on your address, the encryption key and how to update. Source: https://veldhost.eu/docs/n8n-getting-started Picked n8n? Your site came with n8n installed on the Node.js runtime — workflow automation you host yourself, with webhooks on your own address and your data in your own EU container. ## What gets installed - **n8n 2** from the official npm package (pinned; checksums verified by npm), running as a systemd service on **Node.js 24** (which n8n 2 requires) with its own **PostgreSQL** database in your container. - Your **owner account** (the email address on your veldhost account); webhook and editor addresses set to your site's https address; task runners on; telemetry off; execution history pruned after 14 days. - Settings live in `.env` in the site's code root (Files tab): the database, the addresses and `N8N_ENCRYPTION_KEY`. n8n's data folder (`storage/n8n`) holds binary data and is included in backups. ## First login 1. Your site page shows the sign-in address (`/signin`), your login email and a generated password — we display it for 7 days, so save it now. 2. Sign in, then set your own password under **Settings → Personal**. 3. Build a workflow; a **Webhook** node listens at `https://your-site/webhook/…` straight away — no tunnel needed. 4. Credentials you store are encrypted with the `N8N_ENCRYPTION_KEY` in `.env`. Keep it: without it they cannot be decrypted, and a restore on another server needs the same key. ## Updating - Press **Back up now** on the Files tab first. - Bump the `n8n` version in `package.json` (Files tab), then run a deploy: it runs `npm install` and restarts; n8n migrates its database on start. Read n8n's release notes for breaking changes before a major. ## Limits - n8n needs 1 GB of memory (Pro or higher); heavy workflows with large binary files want Business. - Password-reset mail needs SMTP settings in `.env`; until then, ask support to reset the owner password. - Outgoing connections from workflows are allowed; inbound is https on your site address only. --- # Umami: your first steps > Sign in, add a website, paste the tracking script and keep Umami current. Source: https://veldhost.eu/docs/umami-getting-started Picked Umami? Your site came with Umami installed on the Node.js runtime — simple, privacy-friendly analytics without cookies, so no consent banner is needed for it. ## What gets installed - **Umami** built from the pinned release tag of the official repository (the commit is checked before the build), running as a systemd service on Node.js 22 with its own **PostgreSQL** database in your container. - The default `admin` account with the well-known default password already **replaced** by a generated one; telemetry and update checks off. - Settings live in `.env` in the site's code root (Files tab): `DATABASE_URL` and `APP_SECRET`. ## First login 1. Your site page shows the sign-in address (`/login`), the `admin` username and the generated password — we display it for 7 days, so save it now. 2. Sign in, then set your own password under **Profile → Change password**. 3. Add a website under **Settings → Websites → Add website** and copy its tracking script — `