Inception is a system administration and DevOps project from the 42 curriculum. The goal is to create a secure and functional web infrastructure using Docker and Docker Compose. The project must run multiple services in isolated containers, all managed from a single docker-compose.yml file.
This project was built and tested on Debian-based systems and uses Docker to containerize the environment.
The project includes the following containers:
-
Nginx A secure web server with SSL configured using self-signed certificates. Serves as a reverse proxy for WordPress.
-
WordPress A full WordPress website running on PHP-FPM.
-
MariaDB A MySQL-compatible database for storing WordPress data.
-
Redis Used for object caching in WordPress to improve performance.
-
Adminer A lightweight web-based database management tool.
-
cAdvisor Google's container monitoring tool to visualize performance metrics and container usage in real-time.
-
Flask App (CV Viewer) A small Flask application showcasing a personal CV, fulfilling the subject's bonus requirement of demonstrating personal work in a custom web app.
-
FTP Server Enables file upload capability.
- Docker
- Docker Compose
- GNU make
git clone https://github.com/shokdot/Inception.git
cd Inception
makeAlternatively, if not using Makefile:
cd srcs/
docker-compose up --build| Service | URL/Port |
|---|---|
| WordPress | https://localhost:443 |
| Adminer | http://localhost:8080 |
| cAdvisor | http://localhost:2843 |
| Flask CV App | http://localhost:3000 |
| FTP | ftp://localhost (port 21) |
Note: Replace localhost with your VMβs IP if you're not using localhost.
- All services run as non-root users where possible.
- Nginx uses SSL with self-signed certificates.
- MariaDB and FTP credentials are stored in
.envfiles or Docker secrets.
- Caching with Redis for WordPress.
- Container Monitoring with cAdvisor.
- Database Management via Adminer.
- Custom Web App: Flask-powered CV page.
- FTP configured with secure access control.
inception/
βββ srcs/
β βββ requirements/
β βββ bonus/
β β βββ adminer/
β β βββ cadvisor/
β β βββ flask/
β β βββ ftp/
β β βββ redis/
β βββ mariadb/
β βββ nginx/
β βββ wordpress/
βββ .env_example
βββ docker-compose.yml
βββ en.subject.pdf
βββ Makefile
- The entire stack is managed with Docker Compose.
- Services restart automatically unless stopped manually.
- Clean-up with
make cleanordocker-compose down -v. - Clean also volumes with
make fclean
This project follows the official Inception subject provided by 42.