Files
vehicle_rent_management/DEPLOY.md
T
athul rdandClaude Opus 4.8 aa8abf4e56 Initial commit: MV Rent car rental management system
Spring Boot + Thymeleaf app: fleet, drivers, vendors, bookings, billing/
settlements, payments, maintenance, inspections, reviews, telematics, audit
log, staff/user management, and separate admin/vendor/driver portals.
Includes Docker Compose deployment (app + Postgres).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 08:37:05 +05:30

3.1 KiB

Deploying MV Rent to a server (Docker Compose)

Target: root@93.127.166.135. The stack runs the Spring Boot app + PostgreSQL in containers. The server only needs Docker — no Java or Postgres install required.


1. Install Docker on the server (one time)

SSH in and install Docker + the Compose plugin:

ssh root@93.127.166.135

# Ubuntu/Debian:
curl -fsSL https://get.docker.com | sh
docker --version && docker compose version

Open the firewall for HTTP (and HTTPS if you'll add TLS later):

ufw allow 80/tcp && ufw allow 443/tcp   # skip if ufw isn't enabled

2. Copy the project to the server

From your local machine (in the project folder car-rent):

# excludes build output, .git and local uploads
rsync -az --delete \
  --exclude target --exclude .git --exclude uploads \
  ./  root@93.127.166.135:/opt/mvrent/

(Or git clone your repo into /opt/mvrent if it's pushed somewhere.)

3. Configure secrets

On the server:

cd /opt/mvrent
cp .env.example .env
nano .env          # set a strong DB_PASSWORD (and mail creds if you want email)

4. Build & start

cd /opt/mvrent
docker compose up -d --build

First run takes a few minutes (it builds the app image and downloads Postgres). On startup the app creates the schema and seeds demo data automatically.

5. Verify

docker compose ps                 # both services "running"/"healthy"
docker compose logs -f app        # look for "Started CarRentalApplication"
curl -I http://localhost          # expect HTTP 200/302

Then open http://93.127.166.135/ in a browser.

Area URL Default login
Public site /
Admin /admin/login admin / admin123
Vendor portal /vendor/login created from admin
Driver portal /driver/login created from admin

⚠️ Change the admin password immediately (Admin → profile) and delete the demo customer if this is production.


Day-2 operations

Update after code changes (re-run rsync from step 2, then):

cd /opt/mvrent && docker compose up -d --build

Logs / restart / stop:

docker compose logs -f app
docker compose restart app
docker compose down            # stop (keeps data volumes)

Back up the database:

docker compose exec db pg_dump -U postgres mv_rent > backup-$(date +%F).sql

Restore:

cat backup-YYYY-MM-DD.sql | docker compose exec -T db psql -U postgres -d mv_rent

Uploaded files persist in the uploads Docker volume; DB in db-data.


Optional: domain + HTTPS (nginx + Let's Encrypt)

If you point a domain at the server, put nginx in front and get a free cert. First change the app's port mapping in docker-compose.yml from "80:8080" to "127.0.0.1:8080:8080" (so only nginx is public), then:

apt install -y nginx certbot python3-certbot-nginx
# create /etc/nginx/sites-available/mvrent  ->  proxy_pass http://127.0.0.1:8080;
certbot --nginx -d yourdomain.com

Ask me and I'll generate the exact nginx server block for your domain.