Changelog • Usage • License • Contributing
A customisable terminal-style website, intended to act as a portfolio.
The full changelog can be found at CHANGELOG.md
helpcommand - sort commands alphabetically- (Docker) Support setting Nginx
real_ip_from, see docs for environment variables 'REALIP_SOURCE', 'REALIP_CUSTOM_FROM', 'REALIP_CUSTOM_HEADER' - BREAKING: (Docker) Support host & bridge networking
- (Docker) Utilise local logging driver
datecommand, see config- Command aliases, see config
- (Docker) Add files to
./public/public/to have them served at/public/. Does not require rebuild to reflect changes pgpcommand, see config
- Tab completion no longer clears the current command
- (Docker) BREAKING: Moved
compose.ymltocompose.example.yml - (Docker) BREAKING:
NGINX_SERVER_NAMEenvironment variable is now respected. If unset, a 403 error will be returned - (Docker) SSL certificates now use RSA 4096
- Clone the repository
- Copy
config.example.jsontoconfig.jsonand configure as you desire. Fields beginning with__commentdescribe the related non-comment field. - Copy
compose.example.ymltocompose.ymland configure as you desire. Note - binds to127.0.0.1by default, to expose to the internet by default, bind to0.0.0.0. For environment variables, view here. - Copy any files you wish to be served alongside your website to
./public/public/. - Run the container with Docker Compose
docker compose up -d --build. - The container will now be bound to
127.0.0.1:443using a self-signed certificate generated on first start-up.
Bring your own cert
If you wish to use your own certificate instead of using a self-signed, that is possible.
The startup script nginx/5-ssl.sh checks for the presence of both inside the container at:
/etc/ssl/personal-website/personal-website.key/etc/ssl/personal-website/personal-website.crt
Bind mount your cert and private key to these locations and Nginx will use your cert.
| Name | Description |
|---|---|
NGINX_SERVER_NAME |
Used in the Nginx configuration template to respond to the correct server name, see Nginx wiki |
REALIP_SOURCE |
(false, cloudflare, custom) Extract the realip of a user from a request header |
REALIP_CUSTOM_FROM |
Ignored if REALIP_SOURCE not 'custom'. Comma-seperated list of realip sources, see https://nginx.org/en/docs/http/ngx_http_realip_module.html#set_real_ip_from (e.g. 127.0.0.0/24,192.168.0.5,10.0.0.0/24 |
REALIP_CUSTOM_HEADER |
Ignored if REALIP_SOURCE not 'custom'. See https://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_header (e.g. X-Real-IP) |
NGINX_HTTP_LISTEN_PORT |
The port Nginx binds to for serving HTTP traffic (e.g. 80) |
NGINX_HTTPS_LISTEN_PORT |
The port Nginx binds to for serving HTTPS traffic (e.g. 443) |
NGINX_IPV4_LISTEN_ADDR |
The IPV4 address Nginx binds to (e.g. 0.0.0.0, 127.0.0.1) |
NGINX_IPV6_LISTEN_ADDR |
The IPV4 address Nginx binds to (e.g. [::], [::1]) |
- Clone the repository
- Copy
config.example.jsontoconfig.jsonand configure as you desire. Fields beginning with__commentdescribe the related non-comment field. - Install dependencies,
npm install - Deploy
dist/personal-website/browseranywhere you wish.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
See CONTRIBUTING.md.
Special thanks to m4tt72 for inspiring the design.
