This document explains how to use the Inception project as an end user or system administrator. It covers starting/stopping the services, accessing applications, managing credentials, and verifying service health.
The Inception stack provides a complete web infrastructure with the following components:
| Service | Purpose | Access |
|---|---|---|
| WordPress | Website CMS (Content Management System) | https://mkhavari.42.fr |
| Nginx | Web server & reverse proxy (HTTPS) | Automatically handles requests to WordPress |
| MariaDB | Database server | Internal (port 3306, not exposed) |
| Redis | Caching system | Internal (port 6379, improves WordPress performance) |
| Adminer | Database management UI | http://localhost:8080/adminer.php |
| FTP | File transfer service | localhost:21 (for uploading WordPress files) |
| Portainer | Docker container management UI | https://localhost:9443 |
| React Portfolio | Bonus frontend application | http://localhost:5173 |
cd /path/to/inception
make allThis command:
- Sets up the environment (hosts file, data directories, secrets)
- Builds Docker images
- Starts all containers in the background
First startup takes 2-3 minutes while containers initialize.
make downThis stops and removes all containers (data persists in volumes).
make stopPauses all containers without removing them.
make restartRestarts all running containers (useful after configuration changes).
make psShows which containers are running.
https://mkhavari.42.fr
- This is your main website
- Built with WordPress CMS
- Uses HTTPS (secure, self-signed certificate)
https://mkhavari.42.fr/wp-admin
Login Credentials:
- Username:
mkhavari - Password: Read from
secrets/wp_admin_password.txt
From the terminal:
cat secrets/wp_admin_password.txtThe system creates two WordPress users:
| User | Role | Purpose |
|---|---|---|
mkhavari |
Administrator | Full control (can install plugins, manage users, etc.) |
javad |
Author | Can write and publish posts only |
wp_user |
Database User | NOT a WordPress user — only for database connection |
http://localhost:8080
Use to:
- View/edit database contents directly
- Run SQL queries
- Backup/restore database
Login Credentials:
- Server:
mariadb - Username:
wp_user - Password: Read from
secrets/db_password.txt - Database:
wordpress
https://localhost:9443/
Use to:
- View container logs
- See resource usage (CPU, memory)
- Restart/stop individual containers
- Monitor container health
First Login:
- Create admin username and password on first visit
http://localhost:5173
Bonus feature — a personal portfolio website.
Host: localhost
Port: 21
Username: ftpuser
Password: Read from secrets/ftp_password.txt
Use an FTP client to upload/download WordPress files.
All sensitive credentials are in the secrets/ directory:
secrets/
├── db_password.txt # WordPress database user password
├── db_root_password.txt # MariaDB root password
├── wp_admin_password.txt # WordPress admin (mkhavari) password
├── wp_user_password.txt # WordPress author (javad) password
├── ftp_password.txt # FTP user password
└── portainer_pass.txt # Portainer admin password (if configured)
cat secrets/db_password.txt
cat secrets/wp_admin_password.txtrm secrets/*.txt
make secretsAfter logging into WordPress admin panel:
- Go to Users > All Users
- Click on
mkhavari - Scroll down to Account Management
- Change password and save
make psShould show 8 containers in "Up" status:
NAME STATUS
nginx Up
wordpress Up
mariadb Up
redis Up
adminer Up
ftp Up
portainer Up
react Up
curl -k https://mkhavari.42.frShould return HTML (WordPress home page).
docker exec -it wordpress bash -c \
'mariadb -hmariadb -u wp_user -p"$(cat /run/secrets/db_password)" -e "SELECT 1;"'Should output: 1 (connection successful)
docker exec -it redis redis-cli pingShould output: PONG
Check for errors in any service:
docker logs nginx # Nginx logs
docker logs wordpress # WordPress PHP errors
docker logs mariadb # Database logs
docker logs redis # Cache logsVerify data is persisting:
ls -lah /home/mkhavari/data/Should show:
wordpress/— WordPress files and uploadsmariadb/— Database files
Solution:
- Check if containers are running:
make ps - Verify domain in
/etc/hosts:grep mkhavari /etc/hosts - Check nginx logs:
docker logs nginx - Restart:
make restart
Solution:
- Check FTP container is running:
make ps - Verify FTP user was created:
docker exec -it ftp id ftpuser - Check password:
cat secrets/ftp_password.txt
Solution:
- Check Redis is connected:
docker exec -it redis redis-cli ping - Check database:
docker logs mariadb | tail -20 - Restart WordPress:
docker restart wordpress
Solution:
- Clear browser cache
- Check containers:
make ps - Verify port mapping:
docker ps
tar -czf wordpress_backup.tar.gz /home/mkhavari/data/wordpress/docker exec mariadb mysqldump -u root -p$(cat secrets/db_root_password.txt) \
wordpress > wordpress_db_backup.sqldocker exec -i mariadb mysql -u root -p$(cat secrets/db_root_password.txt) \
wordpress < wordpress_db_backup.sql| Problem | Command to Check |
|---|---|
| Container won't start | docker logs <container_name> |
| Port already in use | lsof -i :<port> |
| Database connection error | make logs or docker logs wordpress |
| Files not syncing | ls -la /home/mkhavari/data/wordpress/ |
| High memory usage | docker stats |
For issues or questions, check:
- The logs:
docker logs <service_name> - The DEV_DOC.md for technical details
- The README.md for project overview