A complete, step-by-step guide. Pick your edition below — shared hosting (Hostinger, cPanel…) or your own server with Docker.
Hostinger, cPanel, Plesk… No command line. Ready-to-run package + web installer. Easiest.
Your own Linux server. One command builds everything. Includes ffmpeg for video. Most powerful.
A Linux VPS with a public IP and a domain pointing to it. Install Docker Engine + the Compose plugin:
curl -fsSL https://get.docker.com | sh
unzip neting-pro-galleries-docker-1.0.0.zip -d neting cd neting
.envcp .env.example .env nano .env
Set at least:
APP_URL=https://your-domain.comDB_PASSWORD= a strong Postgres password (your choice)BRAND_NAME / BRAND_TAGLINE — already “Neting Pro” / “Galleries”Leave APP_KEY empty — it's generated in step 5. The bundled compose.yaml runs 6 containers: app, web, queue, scheduler, postgres, redis (queue + scheduler mean no cron needed).
docker compose up -d --build
First build takes a few minutes. Check status with docker compose ps.
docker compose exec app php artisan key:generate --force docker compose exec app php artisan migrate --force docker compose exec app php artisan storage:link
Then create the first administrator by opening https://your-domain.com/install — it detects the database and just creates the admin/owner account.
The web container listens on 127.0.0.1:8090 (HTTP) and :8443 (HTTPS). Put a reverse proxy in front for your domain + automatic TLS. Example with Caddy (/etc/caddy/Caddyfile):
your-domain.com {
reverse_proxy 127.0.0.1:8090
}To change the published ports, edit the ports: of the web service in compose.yaml.
docker compose ps # container status docker compose logs -f app # application logs docker compose exec app bash # shell inside the app docker compose down # stop (data kept in volumes) docker compose up -d --build # rebuild after an update
storage/app (originals + derivatives). Back those up regularly.storage/ and bootstrap/cache/ are writable, and that the document root points to public/. To read the real error, set APP_DEBUG=true in .env, reload, then set it back to false.mod_rewrite is disabled or public/.htaccess wasn't uploaded. Docker: check the reverse proxy points to 127.0.0.1:8090.queue container is up (docker compose ps).migrate --force.MAIL_* settings in .env (SMTP from your host or a provider such as Postmark / SendGrid / Brevo).