# Apache Intranet ## Description LXC containerized Apache webserver, hosted within Proxmox, featuring a fully automated deployment via Ansible Serving a static HTML page, acting as the Intranet, providing a quick, user accessible way to reach internal only services Additionally serving as a place to host temporary files within the LAN, and providing a centralized spot to monitor my SSL cert health and expiry dates ## Architecture Diagram ``` +----------------+ | Proxmox Host | +----------------+ | +------------------+ |Static Apache Page| | (LXC) | +------------------+ / | | \ v v v v +------------+ +--------+ +----------------+ +--------+ +------------+ | Jellyfin | | Grafana| |Simply Translate| | Calibre| | Other | |(Bare-Metal)| | (LXC) | | (Docker) | | (VM) | | Services | +------------+ +--------+ +----------------+ +--------+ +------------+ ``` ## Dependencies - Apache - A reserved or static IP - Any modern browser capable of setting a custom home page - Debian ## Creation Notes I wanted a fast and easy way to access my internal only services without the need to memorize static IPs or set devices to utilize a custom DNS resolver Consequently I decided to create and configure an LXC containerized Apache instance on my Proxmox server Apache's function is to serve a static HTML page, acting as the Intranet The container was given a bridged IP and granted a DHCP reservation Apache and LXC containerization were chosen due to their extremely low resource requirement Currently the container is utilizing merely 20MiBs of RAM out of its allocated 64 ![picture](https://git.tobiastime.xyz/Tobias/Apache-LXC-Intranet/raw/branch/main/images/ram.jpg) Once I had [coded the page](https://git.tobiastime.xyz/Tobias/Apache-LXC-Intranet/src/branch/main/index.html), and pointed Apache to the index file, I modified my Firefox settings to set it as my new homepage ![picture](https://git.tobiastime.xyz/Tobias/Apache-LXC-Intranet/raw/branch/main/images/homepage_firefox.jpg) Every time I open my browser this is what I am now greeted with: ![picture](https://git.tobiastime.xyz/Tobias/Apache-LXC-Intranet/raw/branch/main/images/intranet.jpg) ## File Host Additionally I decided to utilize Apache's directory sharing features to allow the serving and quick access of files over the LAN I added this server block to my configuration ``` Alias /files /var/www/files Options +Indexes ``` Breakdown: - The alias maps the subdirectory accessed via the web of /files to the path on my system /var/www/files - +Indexes specifies there isn't a typical index.html file to serve, rather it is a directory listing After this I created a "jailed user" as detailed in my [BashDDNS page](https://git.tobiastime.xyz/Tobias/BashDDNS) For a brief explanation, a jailed user is a restricted user who's only ability and purpose is to transfer files to a singular directory via SCP A jailed user has their own dedicated SSH key, restricted SSH permissions, no login shell and a modified chroot directory limiting system visibility After this, I created a function within my .bashrc file as follows: ``` bash send2intra() { scp -i /path/2/key "$1" jaileduser@192.168.0.70:/files" } ``` This allows me to quickly type ```send2intra image.png``` in my terminal and have the file transfered to the container, hosted by Apache and available for download within miliseconds ![picture](https://git.tobiastime.xyz/Tobias/Apache-LXC-Intranet/raw/branch/main/images/send2intra.jpg) ![picture](https://git.tobiastime.xyz/Tobias/Apache-LXC-Intranet/raw/branch/main/images/index.jpg) ![picture](https://git.tobiastime.xyz/Tobias/Apache-LXC-Intranet/raw/branch/main/images/file.jpg)