Inception is a systems administration project aimed at expanding knowledge about virtualization using Docker. The project consists of creating a small infrastructure composed of different services under specific rules, all running in Docker containers orchestrated with docker-compose.
- Configure a complete infrastructure using Docker
- Manage web services with NGINX, WordPress, and MariaDB
- Configure SSL/TLS for secure connections
- Implement additional services (bonus)
The infrastructure is composed of the following main services:
NGINX: Web server with TLSv1.2/TLSv1.3 supportWordPress: Content management system to create and manage websitesMariaDB: Database for WordPress
Redis: Cache for WordPressAdminer: Database administration toolPortainer: Docker admin panelStatic Website: Simple HTML/CSS/JS websiteVSFTPD: FTP server pointing to the WordPress volume
inception/
βββ Makefile
βββ srcs/
βββ docker-compose.yml
βββ env_template
βββ requirements/
βββ nginx/
β βββ Dockerfile
β βββ conf/
β βββ config.sh
β βββ favicon.ico
β βββ index.html
β βββ nginx.conf
β βββ inception/
β βββ index.html
β βββ images/
β βββ assets/
β βββ css/
β βββ js/
β βββ sass/
βββ wordpress/
β βββ Dockerfile
β βββ conf/
β βββ config.sh
βββ mariadb/
β βββ Dockerfile
β βββ conf/
β βββ config.sh
βββ bonus/
βββ redis/
β βββ Dockerfile
βββ vsftpd/
β βββ Dockerfile
β βββ conf/
β βββ vsftpd.conf
βββ adminer/
β βββ Dockerfile
βββ portainer/
βββ Dockerfile
The .env file must contain all sensitive variables:
DOMAIN_NAME=localhost
USER_NAME=user_name
USER_PASS=user_pass
ADMIN_NAME=admin_name
ADMIN_PASS=admin_pass (12 char min)-
Clone the repository:
git clone git@github.com:Kobayashi82/Inception.git cd inception -
Configure environment variables:
mv srcs/env_template srcs/.env # Edit srcs/.env with your values -
Build and run:
make
-
Access services:
- WordPress: https://localhost/
- Adminer: https://localhost/adminer/
- Portainer: https://localhost/portainer/
- Static Website: https://localhost/inception/
- FTP: Connect to localhost:21 with credentials from the .env file
make: Build and start all servicesmake up: Build and start all servicesmake down: Stop all containersmake restart: Restart all servicesmake build: Build container imagesmake rebuild: Rebuild images without cachemake clean: Remove imagesmake iclean: Remove imagesmake vclean: Remove volumesmake nclean: Remove the networkmake fclean: Remove images, volumes, and networkmake fcclean: Full cleanup including cachemake evaluation: Prepare the environment for evaluation
| Service | Internal Port | External Port | Description |
|---|---|---|---|
| NGINX | 443 | 443 | Main web server with SSL |
| WordPress | 9000 | - | Web CMS service (web at /) |
| MariaDB | 3306 | - | Database |
| Redis | 6379 | - | Cache |
| Adminer | 8000 | - | DB management (web at /adminer) |
| Portainer | 9000 | - | Docker management (web at /portainer) |
| Website | - | - | Static website (web at /inception) |
| VSFTPD | 21 | 21 | FTP server |
| VSFTPD | 30000-30009 | 30000-30009 | FTP passive ports |
SSL/TLS: Only TLSv1.2 and TLSv1.3 allowedSingle exposed port: Web access only through port 443Environment variables: No hard-coded credentialsNon-default usernames: Custom usernames for better securityNetwork isolation: Internal services not directly accessible from outsideFTP security: Configured with passive mode and restricted user access
- Optimized cache for WordPress
- Significant performance improvement
- Automatic WordPress configuration
- Web interface for database administration
- Custom themes
- Secure access via NGINX
- Docker container management UI
- Real-time monitoring of container performance
- Easy access to logs and container configuration
- Simplified container deployment and management
- Project landing page with responsive design
- Multilingual support (Spanish and English)
- Direct links to all services
- Modern design with CSS animations
- Technologies: HTML5, CSS3, and JavaScript
- Direct access to WordPress files
- Secure configuration with specific users
- Docker Documentation
- Docker Compose Documentation
- NGINX Documentation
- WordPress Documentation
- MariaDB Documentation
- Redis Documentation
- VSFTPD Documentation
- Adminer Documentation
- Portainer Documentation
This project is licensed under the WTFPL β Do What the Fuck You Want to Public License.


