diff --git a/README.md b/README.md index 0cacd99..b3dda57 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ -# docker-compose-configs +# config +Configurations for docker services and linux environments -Public docker compose config repository, to keep track of configuration changes and application setups \ No newline at end of file +# pull +to place the folder structure in the correct location clone the repository in the home folder of the user +```git clone ~/``` diff --git a/authelia/authelia.env b/authelia/authelia.env new file mode 100644 index 0000000..b9217fa --- /dev/null +++ b/authelia/authelia.env @@ -0,0 +1,3 @@ +CONTAINER_NAME=authelia +PORT_HTTPS=9091 +DNS_OVERRIDE=1.1.1.1 diff --git a/authelia/config/configuration.yml b/authelia/config/configuration.yml new file mode 100644 index 0000000..e69de29 diff --git a/authelia/config/users_database.yml b/authelia/config/users_database.yml new file mode 100644 index 0000000..f066eff --- /dev/null +++ b/authelia/config/users_database.yml @@ -0,0 +1,14 @@ +--- +############################################################### +# Users Database # +############################################################### + +users: + username1: + disabled: false + displayname: "User 1" + password: "" + email: user1@gmail.com + groups: + - admin + - user diff --git a/authelia/docker-compose.yaml b/authelia/docker-compose.yaml new file mode 100644 index 0000000..24807ec --- /dev/null +++ b/authelia/docker-compose.yaml @@ -0,0 +1,17 @@ + authelia: + image: authelia/authelia + container_name: ${CONTAINER_NAME} + volumes: + - ${HOME_DIR}/${CONTAINER_NAME}/config:/config + ports: + - ${PORT_HTTPS}:9091 + env_file: + - path: ./authelia.env + required: true + - path: ../global.env + required: true + dns: # do not use dns given by router because it will create a loop when pihole or the server goes down and starts back up + - ${DNS_OVERRIDE} + restart: unless-stopped + environment: + - TZ=Europe/Amsterdam \ No newline at end of file diff --git a/authelia/secrets/jwtsecret b/authelia/secrets/jwtsecret new file mode 100644 index 0000000..e69de29 diff --git a/authelia/secrets/oicd.pem b/authelia/secrets/oicd.pem new file mode 100644 index 0000000..e69de29 diff --git a/authelia/secrets/oidcsecret b/authelia/secrets/oidcsecret new file mode 100644 index 0000000..e69de29 diff --git a/authelia/secrets/session b/authelia/secrets/session new file mode 100644 index 0000000..e69de29 diff --git a/authelia/secrets/smtp b/authelia/secrets/smtp new file mode 100644 index 0000000..e69de29 diff --git a/authelia/secrets/storage b/authelia/secrets/storage new file mode 100644 index 0000000..e69de29 diff --git a/global.env b/global.env new file mode 100644 index 0000000..50f0e33 --- /dev/null +++ b/global.env @@ -0,0 +1,4 @@ +HOME_DIR=/home/silklaasboer +TIMEZONE=Europe/Amsterdam +LOCALTIME=/etc/localtime +COMPOSE_VERSION="3.3 \ No newline at end of file diff --git a/homeassistant/docker-compose.yaml b/homeassistant/docker-compose.yaml new file mode 100644 index 0000000..e65e672 --- /dev/null +++ b/homeassistant/docker-compose.yaml @@ -0,0 +1,21 @@ +services: + homeassistant: + container_name: ${CONTAINER_NAME} + image: "ghcr.io/home-assistant/home-assistant:stable" + volumes: + - ${HOME_DIR}/${CONTAINER_NAME}/config:/config + - ${LOCALTIME}:${LOCALTIME}:ro + - /run/dbus:/run/dbus:ro + restart: unless-stopped + env_file: + - path: ./homeassistant.env + required: true + - path: ../global.env + required: true + privileged: true + network_mode: "host" + devices: + - ${P1_PORT_DEV}:/dev/ttyACM0 + - ${ZIGBEE_DONGLE_PORT_DEV}:/dev/ttyUSB0 + environment: + DISABLE_JEMALLOC: true diff --git a/homeassistant/homeassistant.env b/homeassistant/homeassistant.env new file mode 100644 index 0000000..7e75ce1 --- /dev/null +++ b/homeassistant/homeassistant.env @@ -0,0 +1,3 @@ +CONTAINER_NAME=homeassistant +P1_PORT_DEV=/dev/ttyACM0 +ZIGBEE_DONGLE_PORT_DEV=/dev/ttyUSB0 diff --git a/llink/Dockerfile b/llink/Dockerfile new file mode 100644 index 0000000..be98fea --- /dev/null +++ b/llink/Dockerfile @@ -0,0 +1,2 @@ +FROM nginx:1.26-alpine-slim +COPY . /usr/share/nginx/html \ No newline at end of file diff --git a/llink/LICENSE.md b/llink/LICENSE.md new file mode 100644 index 0000000..03231cc --- /dev/null +++ b/llink/LICENSE.md @@ -0,0 +1,8 @@ +MIT License +Copyright 2019-2021 Seth Cottle + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/llink/README.md b/llink/README.md new file mode 100644 index 0000000..85ba899 --- /dev/null +++ b/llink/README.md @@ -0,0 +1,41 @@ +# Littlelink (Docker Version) + +This a fork of sethcottle/littlelinek. I wanted to create a Docker version and here it is. Its a pure replica only additions is Docker related items. + +## Prerequisites + +- Docker + +## Getting Started + +### Clone the Repository + +```shell +git clone https://github.com/davisdre/littlelink.git +cd littlelink +``` + +### Modify files +Modify your `index.html` accordingly. + +### Build the Docker Image +Build the Docker image using the following command: +```shell +docker build -t littlelink . +``` + +### Build the Docker Container +Run the Docker container with the following command: +```shell +docker run -d -p 80:80 littlelink +``` + +### Access the Web Page +Open your web browser and navigate to `http://localhost` (or the IP address of your Docker host). You should see the hostname of the container displayed on the web page. + +## Files +- `docker-compose.yml`: The docker-compose.yml used to deploy your application. +- `Dockerfile`: The Dockerfile used to build the Docker image. + +## License +This project is licensed under the MIT License - see the LICENSE file for details. \ No newline at end of file diff --git a/llink/css/brands.css b/llink/css/brands.css new file mode 100644 index 0000000..0f04e30 --- /dev/null +++ b/llink/css/brands.css @@ -0,0 +1,1079 @@ +/* +* littlelink.io +* Skeleton V2.0.4 +* Copyright 2014, Dave Gamache +* www.getskeleton.com +* Free to use under the MIT license. +* http://www.opensource.org/licenses/mit-license.php +* 12/29/2014 +*/ + +/* +* Built using on: +* Skeleton V2.0.4 +* Copyright 2014, Dave Gamache +* www.getskeleton.com +* Free to use under the MIT license. +* http://www.opensource.org/licenses/mit-license.php +* 12/29/2014 +*/ + +/* Table of contents +–––––––––––––––––––––––––––––––––––––––––––––––––– + +- Buttons +- Brand Styles + +*/ + +/* Buttons +–––––––––––––––––––––––––––––––––––––––––––––––––– */ + +.button, +button { + display: inline-block; + text-decoration: none; + height: 100%; + text-align: center; + vertical-align: middle; + font-size: 18px; + width: 300px; + font-weight: 700; + line-height: 20px; + padding: 14px 12px 12px 12px; + letter-spacing: 0.1px; + white-space: wrap; + outline: none; + border-radius: 8px; + cursor: pointer; + +} +button:hover, +.button:focus { + color: #212121; + border-color: #888; + outline: #7AB8FF solid 3px +} +.button.button-primary { + color: #fff; + filter: brightness(90%); +} +.button.button-primary:hover, +.button.button-primary:focus { + color: #fff; + filter: brightness(90%); +} + +/* Brand Icons +–––––––––––––––––––––––––––––––––––––––––––––––––– */ + +.icon { + padding: 0px 8px 3.5px 0px; + vertical-align: middle; + width: 20px; + height: 20px; +} + +/* Brand Styles +–––––––––––––––––––––––––––––––––––––––––––––––––– */ + +/* Default (this is great for your own brand color!) */ +.button.button-default { + color: #ffffff; + background-color: #2457F5; +} +.button.button-default:hover, +.button.button-default:focus { + filter: brightness(90%); +} + +/* Amazon */ +.button.button-amazon { + color: #000000; + background-color: #FFFFFF; + border: 1px solid #212121; +} +.button.button-amazon:hover, +.button.button-amazon:focus { + filter: brightness(90%); +} + +/* Amazon Music */ +.button.button-amazon-music { + color: #000000; + background-color: #25D1DA; +} +.button.button-amazon-music:hover, +.button.button-amazon-music:focus { + filter: brightness(90%); +} + +/* Apple App Store */ +.button.button-appstore { + color: #FFFFFF; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-appstore:hover, +.button.button-appstore:focus { + filter: brightness(90%); +} + +/* Apple Music */ +.button.button-apple-music { + color: #ffffff; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-apple-music:hover, +.button.button-apple-music:focus { + filter: brightness(90%); +} + +/* Apple Music Alt */ +.button.button-apple-music-alt { + color: #ffffff; + background-image: linear-gradient(to bottom, #FB5C74, #FA233B); +} +.button.button-apple-music-alt:hover, +.button.button-apple-music-alt:focus { + filter: brightness(90%); +} + +/* Apple Podcasts */ +.button.button-apple-podcasts { + color: #ffffff; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-apple-podcasts:hover, +.button.button-apple-podcasts:focus { + filter: brightness(90%); +} + +/* Apple Podcasts Alt */ +.button.button-apple-podcasts-alt { + color: #ffffff; + background-image: linear-gradient(to bottom, #F452FF, #832BC1); +} +.button.button-apple-podcasts-alt:hover, +.button.button-apple-podcasts-alt:focus { + filter: brightness(90%); +} + +/* ArtStation */ +.button.button-artstation { + color: #ffffff; + background-color: #18181C; + border: 1px solid #FFFFFF; +} +.button.button-artstation:hover, +.button.button-artstation:focus { + filter: brightness(90%); +} + +/* Bandcamp */ +.button.button-bandcamp { + color: #ffffff; + background-color: #1d9fc3; +} +.button.button-bandcamp:hover, +.button.button-bandcamp:focus { + filter: brightness(90%); +} + +/* Behance */ +.button.button-behance { + color: #ffffff; + background-color: #0057FF; +} +.button.button-behance:hover, +.button.button-behance:focus { + filter: brightness(90%); +} + +/* Bluesky */ +.button.button-bluesky { + color: #FFFFFF; + background-color: #1185FE; +} + +.button.button-bluesky:hover, +.button.button-bluesky:focus { + filter: brightness(90%); +} + +/* Bluesky Alt */ +.button.button-bluesky-alt { + color: #000000; + background-color: #FFFFFF; + border: 1px solid #000000; +} +.button.button-bluesky-alt:hover, +.button.button-bluesky-alt:focus { + filter: brightness(90%); +} + +/* Buy Me a Coffee */ +.button.button-coffee { + color: #000000; + background-color: #ffdd00; +} +.button.button-coffee:hover, +.button.button-coffee:focus { + filter: brightness(90%); +} + +/* Cal.com */ +.button.button-cal { + color: #FFFFFF; + background-color: #292929; + border: 1px solid #FFFFFF; +} +.button.button-cal:hover, +.button.button-cal:focus { + filter: brightness(90%); +} + +/* Calendly */ +.button.button-calendly { + color: #FFFFFF; + background-color: #006BFF; +} +.button.button-calendly:hover, +.button.button-calendly:focus { + filter: brightness(90%); +} + +/* Cash App */ +.button.button-cash-app { + color: #ffffff; + background-image: linear-gradient(to bottom, #00d64b, #00c244); +} +.button.button-cash-app:hover, +.button.button-cash-app:focus { + filter: brightness(90%); +} + +/* dev.to */ +.button.button-dev-to { + color: #000000; + background-color: #f5f5f5; + border: 1px solid #212121; +} +.button.button-dev-to:hover, +.button.button-dev-to:focus { + filter: brightness(90%); +} + +/* Discogs */ +.button.button-discogs { + color: #000000; + background-color: #FFFFFF; + border: 1px solid #000000 +} +.button.button-discogs:hover, +.button.button-discogs:focus { + filter: brightness(90%); +} + +/* Discogs Alt */ +.button.button-discogs-alt { + color: #FFFFFF; + background-color: #000000; + border: 1px solid #FFFFFF +} +.button.button-discogs-alt:hover, +.button.button-discogs-alt:focus { + filter: brightness(90%); +} + +/* Discord */ +.button.button-discord { + color: #ffffff; + background-color: #161CBB; +} +.button.button-discord:hover, +.button.button-discord:focus { + filter: brightness(90%); +} + +/* Dribbble */ +.button.button-dribbble { + color: #000000; + background-color: #FFFFFF; + border: 1px solid #212121; +} +.button.button-dribbble:hover, +.button.button-dribbble:focus { + filter: brightness(90%); +} + +/* Etsy */ +.button.button-etsy { + color: #ffffff; + background-color: #F45800; +} +.button.button-etsy:hover, +.button.button-etsy:focus { + filter: brightness(90%); +} + +/* Facebook */ +.button.button-faceb { + color: #ffffff; + background-color: #1877f2; +} +.button.button-faceb:hover, +.button.button-faceb:focus { + filter: brightness(90%); +} + +/* Facebook Messenger */ +.button.button-messenger { + color: #ffffff; + background-image: linear-gradient( + 25deg, + #0099ff, + #5f5dff, + #a033ff, + #c740cc, + #ff5280, + #ff7061 + ); +} +.button.button-messenger:hover, +.button.button-messenger:focus { + filter: brightness(90%); +} + +/* Figma */ +.button.button-figma { + color: #ffffff; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-figma:hover, +.button.button-figma:focus { + filter: brightness(90%); +} + +/* Fiverr */ +.button.button-fiverr { + color: #ffffff; + background-color: #1DBF73; +} +.button.button-fiverr:hover, +.button.button-fiverr:focus { + filter: brightness(90%); +} + +/* Flickr */ +.button.button-flickr { + color: #ffffff; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-flickr:hover, +.button.button-flickr:focus { + filter: brightness(90%); +} + +/* GitHub */ +.button.button-github { + color: #ffffff; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-github:hover, +.button.button-github:focus { + filter: brightness(90%); +} + +/* GitLab */ +.button.button-gitlab { + color: #ffffff; + background-color: #6151b2; +} +.button.button-gitlab:hover, +.button.button-gitlab:focus { + filter: brightness(90%); +} + +/* GoFundMe */ +.button.button-gofundme { + color: #ffffff; + background-color: #02A95C; +} +.button.button-gofundme:hover, +.button.button-gofundme:focus { + filter: brightness(90%); +} + +/* Goodreads */ +.button.button-goodreads { + color: #333333; + background-color: #f3f1e6; + border: 1px solid #212121; +} +.button.button-goodreads:hover, +.button.button-goodreads:focus { + filter: brightness(90%); +} + +/* Google Black */ +.button.button-google-black { + color: #FFFFFF; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-google-black:hover, +.button.button-google-black:focus { + filter: brightness(90%); +} + +/* Google Play Store */ +.button.button-playstore { + color: #FFFFFF; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-playstore:hover, +.button.button-playstore:focus { + filter: brightness(90%); +} + +/* Google Scholar */ +.button.button-google-scholar { + color: #000000; + background-color: #FFFFFF; + border: 1px solid #212121; +} +.button.button-google-scholar:hover, +.button.button-google-scholar:focus { + filter: brightness(90%); +} + +/* Hashnode */ +.button.button-hashnode { + color: #000000; + background-color: #ffffff; + border: 1px solid #212121; +} +.button.button-hashnode:hover, +.button.button-hashnode:focus { + filter: brightness(90%); +} + +/* Instagram */ +.button.button-instagram { + color: #ffffff; + background-image: linear-gradient(-135deg, #1400c8, #b900b4, #f50000); +} +.button.button-instagram:hover, +.button.button-instagram:focus { + filter: brightness(90%); +} + +/* Kick */ +.button.button-kick { + background-color:#000000; + color: #ffffff; + border: 1px solid #ffffff; +} +.button.button-kick:hover { + filter: brightness(90%); +} + +/* Kick Alt */ +.button.button-kick-alt { + background-color:#01e701; + color: #000; +} +.button.button-kick-alt:hover { + filter: brightness(90%); +} + +/* Kickstarter */ +.button.button-kickstarter { + color: #ffffff; + background-color: #05ce78; +} +.button.button-kickstarter:hover, +.button.button-kickstarter:focus { + filter: brightness(90%); +} + +/* Kit */ +.button.button-kit { + color: #ffffff; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-kit:hover, +.button.button-kit:focus { + filter: brightness(90%); +} + +/* Ko-fi */ +.button.button-ko-fi { + color: #ffffff; + background-color: #13C3FF; +} +.button.button-ko-fi:hover, +.button.button-ko-fi:focus { + filter: brightness(90%); +} + +/* Last.fm */ +.button.button-last-fm { + color: #ffffff; + background-color: #D51007; +} +.button.button-last-fm:hover, +.button.button-last-fm:focus { + filter: brightness(90%); +} + +/* Letterboxd */ +.button.button-letterboxd { + color: #ffffff; + background-color: #2c3440; + border: 1px solid #FFFFFF; +} +.button.button-letterboxd:hover, +.button.button-letterboxd:focus { + filter: brightness(90%); +} + +/* Line */ +.button.button-line { + color: #FFFFFF; + background-color: #06C755; +} +.button.button-line:hover, +.button.button-line:focus { + filter: brightness(90%); +} + +/* LinkedIn */ +.button.button-linked { + color: #ffffff; + background-color: #2867b2; +} +.button.button-linked:hover, +.button.button-linked:focus { + filter: brightness(90%); +} + +/* Mailchimp */ +.button.button-mailchimp { + color: #000000; + background-color: #FFE01B; +} +.button.button-mailchimp:hover, +.button.button-mailchimp:focus { + filter: brightness(90%); +} + +/* Mastodon */ +.button.button-mastodon { + color: #ffffff; + background-color: #17063B; + border: 1px solid #FFFFFF; +} +.button.button-mastodon:hover, +.button.button-mastodon:focus { + filter: brightness(90%); +} + +/* Medium */ +.button.button-medium { + color: #ffffff; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-medium:hover, +.button.button-medium:focus { + filter: brightness(90%); +} + +/* Microsoft */ +.button.button-microsoft { + color: #ffffff; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-microsoft:hover, +.button.button-microsoft:focus { + filter: brightness(90%); +} + +/* NGL */ +.button.button-ngl { + color: #ffffff; + background-image: linear-gradient(-45deg, #ff8d10, #ec1187); +} +.button.button-ngl:hover, +.button.button-ngl:focus { + filter: brightness(90%); +} + +/* Notion */ +.button.button-notion { + color: #000000; + border: 1px solid #212121; + background-color: #ffffff; +} +.button.button-notion:hover, +.button.button-notion:focus { + filter: brightness(90%); +} + +/* OnlyFans */ +.button.button-onlyfans { + color: #ffffff; + background-color: #00AEEF; +} +.button.button-onlyfans:hover, +.button.button-onlyfans:focus { + filter: brightness(90%); +} + +/* Patreon */ +.button.button-patreon { + color: #ffffff; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-patreon:hover, +.button.button-patreon:focus { + filter: brightness(90%); +} + +/* PayPal */ +.button.button-paypal { + color: #ffffff; + background-color: #003087; +} +.button.button-paypal:hover, +.button.button-paypal:focus { + filter: brightness(90%); +} + +/* Pinterest */ +.button.button-pinterest { + color: #000000; + background-color: #ffe2eb; + border: 1px solid #212121; +} +.button.button-pinterest:hover, +.button.button-pinterest:focus { + filter: brightness(90%); +} + +/* Post.news */ +.button.button-post-news { + color: #ffffff; + background-color: #678BFF; +} +.button.button-post-news:hover, +.button.button-post-news:focus { + filter: brightness(90%); +} + +/* Product Hunt */ +.button.button-product-hunt { + color: #000000; + background-color: #ffffff; + border: 1px solid #212121; +} +.button.button-producthunt:hover, +.button.button-producthunt:focus { + filter: brightness(90%); +} + +/* Read.cv */ +.button.button-read-cv { + color: #FFFFFF; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-read-cv:hover, +.button.button-read-cv:focus { + filter: brightness(90%); +} + +/* Redbubble */ +.button.button-redbubble { + color: #e41321; + background-color: #ffffff; + border: 1px solid #212121; +} +.button.button-redbubble:hover, +.button.button-redbubble:focus { + filter: brightness(90%); +} + +/* Reddit */ +.button.button-reddit { + color: #FFFFFF; + background-color: #FF4500; +} +.button.button-reddit:hover, +.button.button-reddit:focus { + filter: brightness(90%); +} + +/* Revolut */ +.button.button-revolut { + color: #000000; + background-color: #ffffff; + border: 1px solid black; +} +.button.button-revolut:hover, +.button.button-revolut:focus { + filter: brightness(90%); +} + +/* Shop */ +.button.button-shop { + color: #ffffff; + background-color: #5A31F4; +} +.button.button-shop:hover, +.button.button-shop:focus { + filter: brightness(90%); +} + +/* Signal */ +.button.button-signal { + color: #ffffff; + background-color: #3a76f0; +} +.button.button-signal:hover, +.button.button-signal:focus { + filter: brightness(90%); +} + +/* Slack */ +.button.button-slack { + color: #000000; + background-color: #FFFFFF; + border: 1px solid #212121; +} +.button.button-slack:hover, +.button.button-slack:focus { + filter: brightness(90%); +} + +/* Snapchat */ +.button.button-snapchat { + color: #000000; + background-color: #fffc00; +} +.button.button-snapchat:hover, +.button.button-snapchat:focus { + filter: brightness(90%); +} + +/* SoundCloud */ +.button.button-soundcloud { + color: #ffffff; + background-color: #ff5500; +} +.button.button-soundcloud:hover, +.button.button-soundcloud:focus { + filter: brightness(90%); +} + +/* Spotify */ +.button.button-spotify { + color: #191414; + background-color: #1db954; +} +.button.button-spotify:hover, +.button.button-spotify:focus { + filter: brightness(90%); +} + +/* Spotify Alt */ +.button.button-spotify-alt { + color: #FFFFFF; + background-color: #191414; + border: 1px solid #FFFFFF; +} +.button.button-spotify-alt:hover, +.button.button-spotify-alt:focus { + filter: brightness(90%); +} + +/* Square */ +.button.button-square { + color: #FFFFFF; + background-color: #006AFF; +} +.button.button-square:hover, +.button.button-square:focus { + filter: brightness(90%); +} + +/* Stack Overflow */ +.button.button-stack-overflow { + color: #000000; + background-color: #FFFFFF; + border: 1px solid #000000; +} +.button.button-stack-overflow:hover, +.button.button-stack-overflow:focus { + filter: brightness(90%); +} + +/* Steam */ +.button.button-steam { + color: #ffffff; + background-image: linear-gradient(90deg, #08BBFF, #2B75FF); +} +.button.button-steam:hover, +.button.button-steam:focus { + filter: brightness(90%); +} + +/* Steam Alt */ +.button.button-steam-alt { + color: #ffffff; + background-image: linear-gradient(90deg, #09172a, #072a57, #0c5085); + border: 1px solid #FFFFFF; +} +.button.button-steam-alt:hover, +.button.button-steam-alt:focus { + filter: brightness(90%); +} + +/* Strava */ +.button.button-strava { + color: #ffffff; + background-color: #fc5200; +} +.button.button-strava:hover, +.button.button-strava:focus { + filter: brightness(90%); +} + +/* Substack */ +.button.button-substack { + color: #ffffff; + background-color: #FF6719; +} +.button.button-substack:hover, +.button.button-substack:focus { + filter: brightness(90%); +} + +/* Telegram */ +.button.button-telegram { + color: #ffffff; + background-color: #3faee8; +} +.button.button-telegram:hover, +.button.button-telegram:focus { + filter: brightness(90%); +} + +/* Threads */ +.button.button-threads { + color: #FFFFFF; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-threads:hover, +.button.button-threads:focus { + filter: brightness(90%); +} + +/* Threema */ +.button.button-threema { + color: #000000; + background-color: #3fe669; +} +.button.button-threema:hover, +.button.button-threema:focus { + filter: brightness(90%); +} + +/* TikTok */ +.button.button-tiktok { + color: #ffffff; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-tiktok:hover, +.button.button-tiktok:focus { + filter: brightness(90%); +} + +/* Trakt */ +.button.button-trakt { + color: #ffffff; + background-color: #ED1C24; +} +.button.button-trakt:hover, +.button.button-trakt:focus { + filter: brightness(90%); +} + +/* Trello */ +.button.button-trello { + color: #ffffff; + background-color: #0065ff; +} +.button.button-trello:hover, +.button.button-trello:focus { + filter: brightness(90%); +} + +/* Tumblr */ +.button.button-tumb { + color: #ffffff; + background-color: #131313; + border: 1px solid #FFFFFF; +} +.button.button-tumb:hover, +.button.button-tumb:focus { + filter: brightness(90%); +} + +/* Twitch */ +.button.button-twitch { + color: #ffffff; + background-color: #9146ff; +} +.button.button-twitch:hover, +.button.button-twitch:focus { + filter: brightness(90%); +} + +/* Unsplash */ +.button.button-unsplash { + color: #000000; + background-color: #ffffff; + border: 1px solid #212121; +} +.button.button-unsplash:hover, +.button.button-unsplash:focus { + filter: brightness(90%); +} + +/* Untappd */ +.button.button-untappd { + color: #000000; + background-color: #ffc000; +} +.button.button-untappd:hover, +.button.button-untappd:focus { + filter: brightness(90%); +} + +/* Upwork */ +.button.button-upwork { + color: #FFFFFF; + background-color: #14A800; +} +.button.button-upwork:hover, +.button.button-upwork:focus { + filter: brightness(90%); +} + +/* Venmo */ +.button.button-venmo { + color: #ffffff; + background-color: #008CFF; +} +.button.button-venmo:hover, +.button.button-venmo:focus { + filter: brightness(90%); +} + +/* Vimeo */ +.button.button-vimeo { + color: #ffffff; + background-color: #1ab7ea; +} +.button.button-vimeo:hover, +.button.button-vimeo:focus { + filter: brightness(90%); +} + +/* VSCO */ +.button.button-vsco { + color: #FFFFFF; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-vsco:hover, +.button.button-vsco:focus { + filter: brightness(90%); +} + +/* Website */ +.button.button-web { + color: #ffffff; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-web:hover, +.button.button-web:focus { + filter: brightness(90%); +} + +/* WhatsApp */ +.button.button-whatsapp { + color: #ffffff; + background-color: #455a64; +} +.button.button-whatsapp:hover, +.button.button-whatsapp:focus { + filter: brightness(90%); +} + +/* Wordpress */ +.button.button-wordpress { + color: #ffffff; + background-color: #21759b; +} +.button.button-wordpress:hover, +.button.button-wordpress:focus { + filter: brightness(90%); +} + +/* X */ +.button.button-x { + color: #FFFFFF; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-x:hover, +.button.button-x:focus { + filter: brightness(90%); +} + +/* YouTube */ +.button.button-yt { + color: #ffffff; + background-color: #000000; + border: 1px solid #FFFFFF; +} +.button.button-yt:hover, +.button.button-yt:focus { + filter: brightness(90%); +} + +/* Zoom */ +.button.button-zoom { + color: #ffffff; + background-color: #0B5CFF; +} +.button.button-zoom:hover, +.button.button-zoom:focus { + filter: brightness(90%); +} \ No newline at end of file diff --git a/llink/css/normalize.css b/llink/css/normalize.css new file mode 100644 index 0000000..458eea1 --- /dev/null +++ b/llink/css/normalize.css @@ -0,0 +1,427 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} diff --git a/llink/css/skeleton-auto.css b/llink/css/skeleton-auto.css new file mode 100644 index 0000000..56f49cb --- /dev/null +++ b/llink/css/skeleton-auto.css @@ -0,0 +1,279 @@ +/* +* littlelink V1 +* https://littlelink.com +* Free to use under the MIT license. +* http://www.opensource.org/licenses/mit-license.php +* 12/21/2019 +* +* Built using: +* +* Skeleton V2.0.4 +* Copyright 2014, Dave Gamache +* www.getskeleton.com +* Free to use under the MIT license. +* http://www.opensource.org/licenses/mit-license.php +* 12/29/2014 +*/ + +/* Table of contents +–––––––––––––––––––––––––––––––––––––––––––––––––– +- Grid +- Base Styles +- Typography +- Links +- Code +- Spacing +- Utilities +* +* You'll find the button css in css/brands.css. +* +*/ + +/* Grid +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.container { + position: relative; + width: 100%; + max-width: 600px; + text-align: center; + margin: 0 auto; + padding: 0 20px; + box-sizing: border-box; +} +.container-left { + position: relative; + width: 100%; + max-width: 600px; + text-align: left; + margin: 0 auto; + padding: 0 20px; + box-sizing: border-box; +} +.column { + position: center; + width: 100%; + float: center; + box-sizing: border-box; +} + +/* For devices larger than 400px */ +@media (min-width: 400px) { + .container { + width: 85%; + padding: 0; + } +} + +/* For devices larger than 550px */ +@media (min-width: 550px) { + .container { + width: 80%; + } + .column, + .columns { + margin-left: 0; + } + .column:first-child, + .columns:first-child { + margin-left: 0; + } +} + +/* Base Styles +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +/* NOTE +html is set to 62.5% so that all the REM measurements throughout Skeleton +are based on 10px sizing. So basically 1.5rem = 15px :) */ + +html { + font-size: 100%; + color-scheme: light dark; +} +body { + font-size: 18px; + line-height: 24px; + font-weight: 400; + font-family: "Open Sans", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, + sans-serif; +} + +/* Typography +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +h1 { + margin-top: 0; + margin-bottom: 16px; + font-weight: 800; +} +h1 { + font-size: 24px; + line-height: 64px; + letter-spacing: 0; +} + +/* Larger than phablet */ +@media (min-width: 550px) { + h1 { + font-size: 48px; + line-height: 96px; + } +} + +p { + margin-top: 0; +} + +/* Links +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +a { + color: #2457F5; +} +a:hover { + color: #083BDA; +} +a:focus { + outline: #7AB8FF solid 2px; + border-radius: 2px; +} + +/* Link Color Dark Theme */ +@media (prefers-color-scheme: dark) { + a { + color: #4899F7; +} +a:hover { + color: #7AB8FF; +} +a:focus { + outline: #7AB8FF solid 2px; + border-radius: 2px; +} +} + +/* Code +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +code { + padding: 0.2rem 0.5rem; + margin: 0 0.2rem; + font-size: 90%; + white-space: nowrap; + background: #f1f1f1; + border: 1px solid #e1e1e1; + border-radius: 4px; +} +pre > code { + display: block; + padding: 1rem 1.5rem; + white-space: pre; +} + +/* Spacing +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +button, +.button { + margin-bottom: 1rem; +} +input, +textarea, +select, +fieldset { + margin-bottom: 1.5rem; +} +pre, +blockquote, +dl, +figure, +p, +ol { + margin-bottom: 2.5rem; +} + +/* Utilities +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.u-full-width { + width: 100%; + box-sizing: border-box; +} +.u-max-full-width { + max-width: 100%; + box-sizing: border-box; +} +.u-pull-right { + float: right; +} +.u-pull-left { + float: left; +} + +/* Misc +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +hr { + margin-top: 3rem; + margin-bottom: 3.5rem; + border-width: 0; + border-top: 1px solid #e1e1e1; +} +/* Radius values: + +10%-40%: Squircles +50% (default): True circle +*/ +.avatar { + width: 128px; + height: 128px; + object-fit: cover; + background-position: center; + border-radius: 50%; +} + +/* open-sans-regular - vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.eot'); /* IE9 Compat Modes */ + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff') format('woff'), /* Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.svg#OpenSans') format('svg'); /* Legacy iOS */ +} +/* open-sans-600 - vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.eot'); /* IE9 Compat Modes */ + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.woff') format('woff'), /* Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.svg#OpenSans') format('svg'); /* Legacy iOS */ +} +/* open-sans-700 - vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.eot'); /* IE9 Compat Modes */ + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.woff') format('woff'), /* Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.svg#OpenSans') format('svg'); /* Legacy iOS */ +} +/* open-sans-800 - vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 800; + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.eot'); /* IE9 Compat Modes */ + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.woff') format('woff'), /* Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.svg#OpenSans') format('svg'); /* Legacy iOS */ +} \ No newline at end of file diff --git a/llink/css/skeleton-dark.css b/llink/css/skeleton-dark.css new file mode 100644 index 0000000..f2f57f8 --- /dev/null +++ b/llink/css/skeleton-dark.css @@ -0,0 +1,261 @@ +/* +* littlelink V1 +* https://littlelink.com +* Free to use under the MIT license. +* http://www.opensource.org/licenses/mit-license.php +* 12/21/2019 +* +* Built using: +* +* Skeleton V2.0.4 +* Copyright 2014, Dave Gamache +* www.getskeleton.com +* Free to use under the MIT license. +* http://www.opensource.org/licenses/mit-license.php +* 12/29/2014 +*/ + +/* Table of contents +–––––––––––––––––––––––––––––––––––––––––––––––––– +- Grid +- Base Styles +- Typography +- Links +- Code +- Spacing +- Utilities +* +* You'll find the button css in css/brands.css. +* +*/ + +/* Grid +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.container { + position: relative; + width: 100%; + max-width: 600px; + text-align: center; + margin: 0 auto; + padding: 0 20px; + box-sizing: border-box; +} +.container-left { + position: relative; + width: 100%; + max-width: 600px; + text-align: left; + margin: 0 auto; + padding: 0 20px; + box-sizing: border-box; +} +.column { + position: center; + width: 100%; + float: center; + box-sizing: border-box; +} + +/* For devices larger than 400px */ +@media (min-width: 400px) { + .container { + width: 85%; + padding: 0; + } +} + +/* For devices larger than 550px */ +@media (min-width: 550px) { + .container { + width: 80%; + } + .column, + .columns { + margin-left: 0; + } + .column:first-child, + .columns:first-child { + margin-left: 0; + } +} + +/* Base Styles +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +/* NOTE +html is set to 62.5% so that all the REM measurements throughout Skeleton +are based on 10px sizing. So basically 1.5rem = 15px :) */ + +html { + font-size: 100%; + color-scheme: dark; +} +body { + font-size: 18px; + line-height: 24px; + font-weight: 400; + font-family: "Open Sans", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, + sans-serif; +} + +/* Typography +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +h1 { + margin-top: 0; + margin-bottom: 16px; + font-weight: 800; +} +h1 { + font-size: 24px; + line-height: 64px; + letter-spacing: 0; +} + +/* Larger than phablet */ +@media (min-width: 550px) { + h1 { + font-size: 48px; + line-height: 96px; + } +} + +p { + margin-top: 0; +} + +/* Links +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +a { + color: #4899F7; +} +a:hover { + color: #7AB8FF; +} + +/* Code +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +code { + padding: 0.2rem 0.5rem; + margin: 0 0.2rem; + font-size: 90%; + white-space: nowrap; + background: #f1f1f1; + border: 1px solid #e1e1e1; + border-radius: 4px; +} +pre > code { + display: block; + padding: 1rem 1.5rem; + white-space: pre; +} + +/* Spacing +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +button, +.button { + margin-bottom: 1rem; +} +input, +textarea, +select, +fieldset { + margin-bottom: 1.5rem; +} +pre, +blockquote, +dl, +figure, +p, +ol { + margin-bottom: 2.5rem; +} + +/* Utilities +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.u-full-width { + width: 100%; + box-sizing: border-box; +} +.u-max-full-width { + max-width: 100%; + box-sizing: border-box; +} +.u-pull-right { + float: right; +} +.u-pull-left { + float: left; +} + +/* Misc +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +hr { + margin-top: 3rem; + margin-bottom: 3.5rem; + border-width: 0; + border-top: 1px solid #e1e1e1; +} +/* Radius values: + +10%-40%: Squircles +50% (default): True circle +*/ +.avatar { + width: 128px; + height: 128px; + object-fit: cover; + background-position: center; + border-radius: 50%; +} + +/* open-sans-regular - vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.eot'); /* IE9 Compat Modes */ + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff') format('woff'), /* Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.svg#OpenSans') format('svg'); /* Legacy iOS */ +} +/* open-sans-600 - vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.eot'); /* IE9 Compat Modes */ + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.woff') format('woff'), /* Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.svg#OpenSans') format('svg'); /* Legacy iOS */ +} +/* open-sans-700 - vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.eot'); /* IE9 Compat Modes */ + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.woff') format('woff'), /* Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.svg#OpenSans') format('svg'); /* Legacy iOS */ +} +/* open-sans-800 - vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 800; + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.eot'); /* IE9 Compat Modes */ + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.woff') format('woff'), /* Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.svg#OpenSans') format('svg'); /* Legacy iOS */ +} \ No newline at end of file diff --git a/llink/css/skeleton-light.css b/llink/css/skeleton-light.css new file mode 100644 index 0000000..d33a65d --- /dev/null +++ b/llink/css/skeleton-light.css @@ -0,0 +1,261 @@ +/* +* littlelink V1 +* https://littlelink.com +* Free to use under the MIT license. +* http://www.opensource.org/licenses/mit-license.php +* 12/21/2019 +* +* Built using: +* +* Skeleton V2.0.4 +* Copyright 2014, Dave Gamache +* www.getskeleton.com +* Free to use under the MIT license. +* http://www.opensource.org/licenses/mit-license.php +* 12/29/2014 +*/ + +/* Table of contents +–––––––––––––––––––––––––––––––––––––––––––––––––– +- Grid +- Base Styles +- Typography +- Links +- Code +- Spacing +- Utilities +* +* You'll find the button css in css/brands.css. +* +*/ + +/* Grid +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.container { + position: relative; + width: 100%; + max-width: 600px; + text-align: center; + margin: 0 auto; + padding: 0 20px; + box-sizing: border-box; +} +.container-left { + position: relative; + width: 100%; + max-width: 600px; + text-align: left; + margin: 0 auto; + padding: 0 20px; + box-sizing: border-box; +} +.column { + position: center; + width: 100%; + float: center; + box-sizing: border-box; +} + +/* For devices larger than 400px */ +@media (min-width: 400px) { + .container { + width: 85%; + padding: 0; + } +} + +/* For devices larger than 550px */ +@media (min-width: 550px) { + .container { + width: 80%; + } + .column, + .columns { + margin-left: 0; + } + .column:first-child, + .columns:first-child { + margin-left: 0; + } +} + +/* Base Styles +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +/* NOTE +html is set to 62.5% so that all the REM measurements throughout Skeleton +are based on 10px sizing. So basically 1.5rem = 15px :) */ + +html { + font-size: 100%; + color-scheme: light; +} +body { + font-size: 18px; + line-height: 24px; + font-weight: 400; + font-family: "Open Sans", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, + sans-serif; +} + +/* Typography +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +h1 { + margin-top: 0; + margin-bottom: 16px; + font-weight: 800; +} +h1 { + font-size: 24px; + line-height: 64px; + letter-spacing: 0; +} + +/* Larger than phablet */ +@media (min-width: 550px) { + h1 { + font-size: 48px; + line-height: 96px; + } +} + +p { + margin-top: 0; +} + +/* Links +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +a { + color: #2457F5; +} +a:hover { + color: #083BDA; +} + +/* Code +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +code { + padding: 0.2rem 0.5rem; + margin: 0 0.2rem; + font-size: 90%; + white-space: nowrap; + background: #f1f1f1; + border: 1px solid #e1e1e1; + border-radius: 4px; +} +pre > code { + display: block; + padding: 1rem 1.5rem; + white-space: pre; +} + +/* Spacing +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +button, +.button { + margin-bottom: 1rem; +} +input, +textarea, +select, +fieldset { + margin-bottom: 1.5rem; +} +pre, +blockquote, +dl, +figure, +p, +ol { + margin-bottom: 2.5rem; +} + +/* Utilities +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.u-full-width { + width: 100%; + box-sizing: border-box; +} +.u-max-full-width { + max-width: 100%; + box-sizing: border-box; +} +.u-pull-right { + float: right; +} +.u-pull-left { + float: left; +} + +/* Misc +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +hr { + margin-top: 3rem; + margin-bottom: 3.5rem; + border-width: 0; + border-top: 1px solid #e1e1e1; +} +/* Radius values: + +10%-40%: Squircles +50% (default): True circle +*/ +.avatar { + width: 128px; + height: 128px; + object-fit: cover; + background-position: center; + border-radius: 50%; +} + +/* open-sans-regular - vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.eot'); /* IE9 Compat Modes */ + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff') format('woff'), /* Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.svg#OpenSans') format('svg'); /* Legacy iOS */ +} +/* open-sans-600 - vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.eot'); /* IE9 Compat Modes */ + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.woff') format('woff'), /* Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.svg#OpenSans') format('svg'); /* Legacy iOS */ +} +/* open-sans-700 - vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.eot'); /* IE9 Compat Modes */ + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.woff') format('woff'), /* Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.svg#OpenSans') format('svg'); /* Legacy iOS */ +} +/* open-sans-800 - vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 800; + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.eot'); /* IE9 Compat Modes */ + src: url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.woff') format('woff'), /* Modern Browsers */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.svg#OpenSans') format('svg'); /* Legacy iOS */ +} \ No newline at end of file diff --git a/llink/docker-compose.yml b/llink/docker-compose.yml new file mode 100644 index 0000000..8704c7e --- /dev/null +++ b/llink/docker-compose.yml @@ -0,0 +1,7 @@ +version: "3" +services: + little-link: + image: llink:latest + container_name: littlelink-server + ports: + - 80:80 \ No newline at end of file diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.eot b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.eot new file mode 100644 index 0000000..12c8464 Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.eot differ diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.svg b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.svg new file mode 100644 index 0000000..e0fe71f --- /dev/null +++ b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.svg @@ -0,0 +1,366 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.ttf b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.ttf new file mode 100644 index 0000000..0f92154 Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.ttf differ diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.woff b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.woff new file mode 100644 index 0000000..32c56a3 Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.woff differ diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.woff2 b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.woff2 new file mode 100644 index 0000000..2659995 Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-600.woff2 differ diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.eot b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.eot new file mode 100644 index 0000000..7dbc32a Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.eot differ diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.svg b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.svg new file mode 100644 index 0000000..717e6a6 --- /dev/null +++ b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.svg @@ -0,0 +1,365 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.ttf b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.ttf new file mode 100644 index 0000000..e183c89 Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.ttf differ diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.woff b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.woff new file mode 100644 index 0000000..fd9eb37 Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.woff differ diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.woff2 b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.woff2 new file mode 100644 index 0000000..e44d73d Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-700.woff2 differ diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.eot b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.eot new file mode 100644 index 0000000..6645b6c Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.eot differ diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.svg b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.svg new file mode 100644 index 0000000..ed9eb11 --- /dev/null +++ b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.svg @@ -0,0 +1,363 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.ttf b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.ttf new file mode 100644 index 0000000..d09d27a Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.ttf differ diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.woff b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.woff new file mode 100644 index 0000000..170dc15 Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.woff differ diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.woff2 b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.woff2 new file mode 100644 index 0000000..8af8d84 Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-800.woff2 differ diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.eot b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.eot new file mode 100644 index 0000000..c7ae8c2 Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.eot differ diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.svg b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.svg new file mode 100644 index 0000000..9d49aeb --- /dev/null +++ b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.svg @@ -0,0 +1,365 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.ttf b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.ttf new file mode 100644 index 0000000..cafe798 Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.ttf differ diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff new file mode 100644 index 0000000..9bc5d1e Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff differ diff --git a/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff2 b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff2 new file mode 100644 index 0000000..2aa7f33 Binary files /dev/null and b/llink/fonts/open-sans-v34-vietnamese_latin-ext_latin_hebrew_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff2 differ diff --git a/llink/images/icons/amazon-music.svg b/llink/images/icons/amazon-music.svg new file mode 100644 index 0000000..5e392e3 --- /dev/null +++ b/llink/images/icons/amazon-music.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/amazon.svg b/llink/images/icons/amazon.svg new file mode 100644 index 0000000..0f30b21 --- /dev/null +++ b/llink/images/icons/amazon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/apple-music-alt.svg b/llink/images/icons/apple-music-alt.svg new file mode 100644 index 0000000..152598f --- /dev/null +++ b/llink/images/icons/apple-music-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/apple-music.svg b/llink/images/icons/apple-music.svg new file mode 100644 index 0000000..c4a5a6b --- /dev/null +++ b/llink/images/icons/apple-music.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/apple-podcasts-alt.svg b/llink/images/icons/apple-podcasts-alt.svg new file mode 100644 index 0000000..de30ad8 --- /dev/null +++ b/llink/images/icons/apple-podcasts-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/apple-podcasts.svg b/llink/images/icons/apple-podcasts.svg new file mode 100644 index 0000000..9d8e414 --- /dev/null +++ b/llink/images/icons/apple-podcasts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/apple.svg b/llink/images/icons/apple.svg new file mode 100644 index 0000000..6eb6a00 --- /dev/null +++ b/llink/images/icons/apple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/artstation.svg b/llink/images/icons/artstation.svg new file mode 100644 index 0000000..e8fd6b6 --- /dev/null +++ b/llink/images/icons/artstation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/bandcamp.svg b/llink/images/icons/bandcamp.svg new file mode 100644 index 0000000..c68ce86 --- /dev/null +++ b/llink/images/icons/bandcamp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/behance.svg b/llink/images/icons/behance.svg new file mode 100644 index 0000000..00116ca --- /dev/null +++ b/llink/images/icons/behance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/blog.svg b/llink/images/icons/blog.svg new file mode 100644 index 0000000..ac23f7f --- /dev/null +++ b/llink/images/icons/blog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/bluesky-alt.svg b/llink/images/icons/bluesky-alt.svg new file mode 100644 index 0000000..716e873 --- /dev/null +++ b/llink/images/icons/bluesky-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/bluesky.svg b/llink/images/icons/bluesky.svg new file mode 100644 index 0000000..8742cd7 --- /dev/null +++ b/llink/images/icons/bluesky.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/buy-me-a-coffee.svg b/llink/images/icons/buy-me-a-coffee.svg new file mode 100644 index 0000000..a273355 --- /dev/null +++ b/llink/images/icons/buy-me-a-coffee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/cal.svg b/llink/images/icons/cal.svg new file mode 100644 index 0000000..cec7ea5 --- /dev/null +++ b/llink/images/icons/cal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/calendly.svg b/llink/images/icons/calendly.svg new file mode 100644 index 0000000..a56807c --- /dev/null +++ b/llink/images/icons/calendly.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/cash-app-btc.svg b/llink/images/icons/cash-app-btc.svg new file mode 100644 index 0000000..0c28223 --- /dev/null +++ b/llink/images/icons/cash-app-btc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/cash-app-dollar.svg b/llink/images/icons/cash-app-dollar.svg new file mode 100644 index 0000000..1e9ef1a --- /dev/null +++ b/llink/images/icons/cash-app-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/cash-app-pound.svg b/llink/images/icons/cash-app-pound.svg new file mode 100644 index 0000000..84edc5b --- /dev/null +++ b/llink/images/icons/cash-app-pound.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/dev-to.svg b/llink/images/icons/dev-to.svg new file mode 100644 index 0000000..2d25a8e --- /dev/null +++ b/llink/images/icons/dev-to.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/discogs-alt.svg b/llink/images/icons/discogs-alt.svg new file mode 100644 index 0000000..f91e5c1 --- /dev/null +++ b/llink/images/icons/discogs-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/discogs.svg b/llink/images/icons/discogs.svg new file mode 100644 index 0000000..08d99aa --- /dev/null +++ b/llink/images/icons/discogs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/discord.svg b/llink/images/icons/discord.svg new file mode 100644 index 0000000..1677aa2 --- /dev/null +++ b/llink/images/icons/discord.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/dribbble.svg b/llink/images/icons/dribbble.svg new file mode 100644 index 0000000..f73d21f --- /dev/null +++ b/llink/images/icons/dribbble.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/email-alt.svg b/llink/images/icons/email-alt.svg new file mode 100644 index 0000000..2cd5c51 --- /dev/null +++ b/llink/images/icons/email-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/email.svg b/llink/images/icons/email.svg new file mode 100644 index 0000000..b00cab1 --- /dev/null +++ b/llink/images/icons/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/etsy.svg b/llink/images/icons/etsy.svg new file mode 100644 index 0000000..bd82581 --- /dev/null +++ b/llink/images/icons/etsy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/facebook.svg b/llink/images/icons/facebook.svg new file mode 100644 index 0000000..337ac70 --- /dev/null +++ b/llink/images/icons/facebook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/figma.svg b/llink/images/icons/figma.svg new file mode 100644 index 0000000..60b2398 --- /dev/null +++ b/llink/images/icons/figma.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/fiverr.svg b/llink/images/icons/fiverr.svg new file mode 100644 index 0000000..8d9fe03 --- /dev/null +++ b/llink/images/icons/fiverr.svg @@ -0,0 +1,3 @@ + + + diff --git a/llink/images/icons/flickr.svg b/llink/images/icons/flickr.svg new file mode 100644 index 0000000..79a005e --- /dev/null +++ b/llink/images/icons/flickr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-blog.svg b/llink/images/icons/generic-blog.svg new file mode 100644 index 0000000..d107c7b --- /dev/null +++ b/llink/images/icons/generic-blog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-calendar.svg b/llink/images/icons/generic-calendar.svg new file mode 100644 index 0000000..90a70c9 --- /dev/null +++ b/llink/images/icons/generic-calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-cloud.svg b/llink/images/icons/generic-cloud.svg new file mode 100644 index 0000000..d8e2a65 --- /dev/null +++ b/llink/images/icons/generic-cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-code.svg b/llink/images/icons/generic-code.svg new file mode 100644 index 0000000..4d7999b --- /dev/null +++ b/llink/images/icons/generic-code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-computer.svg b/llink/images/icons/generic-computer.svg new file mode 100644 index 0000000..c19b60c --- /dev/null +++ b/llink/images/icons/generic-computer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-email-alt.svg b/llink/images/icons/generic-email-alt.svg new file mode 100644 index 0000000..84c2a46 --- /dev/null +++ b/llink/images/icons/generic-email-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-email.svg b/llink/images/icons/generic-email.svg new file mode 100644 index 0000000..b77761c --- /dev/null +++ b/llink/images/icons/generic-email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-homepage.svg b/llink/images/icons/generic-homepage.svg new file mode 100644 index 0000000..82343d1 --- /dev/null +++ b/llink/images/icons/generic-homepage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-map.svg b/llink/images/icons/generic-map.svg new file mode 100644 index 0000000..fa89872 --- /dev/null +++ b/llink/images/icons/generic-map.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-phone.svg b/llink/images/icons/generic-phone.svg new file mode 100644 index 0000000..13af93d --- /dev/null +++ b/llink/images/icons/generic-phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-review.svg b/llink/images/icons/generic-review.svg new file mode 100644 index 0000000..22e09ae --- /dev/null +++ b/llink/images/icons/generic-review.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-rss.svg b/llink/images/icons/generic-rss.svg new file mode 100644 index 0000000..989ebe9 --- /dev/null +++ b/llink/images/icons/generic-rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-shopping-bag.svg b/llink/images/icons/generic-shopping-bag.svg new file mode 100644 index 0000000..4e22ed5 --- /dev/null +++ b/llink/images/icons/generic-shopping-bag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-shopping-tag.svg b/llink/images/icons/generic-shopping-tag.svg new file mode 100644 index 0000000..15bdb68 --- /dev/null +++ b/llink/images/icons/generic-shopping-tag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-sms.svg b/llink/images/icons/generic-sms.svg new file mode 100644 index 0000000..3d4adf4 --- /dev/null +++ b/llink/images/icons/generic-sms.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/generic-website.svg b/llink/images/icons/generic-website.svg new file mode 100644 index 0000000..a3623c9 --- /dev/null +++ b/llink/images/icons/generic-website.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/github.svg b/llink/images/icons/github.svg new file mode 100644 index 0000000..bfdc359 --- /dev/null +++ b/llink/images/icons/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/gitlab.svg b/llink/images/icons/gitlab.svg new file mode 100644 index 0000000..e17e146 --- /dev/null +++ b/llink/images/icons/gitlab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/gofundme.svg b/llink/images/icons/gofundme.svg new file mode 100644 index 0000000..0944d4b --- /dev/null +++ b/llink/images/icons/gofundme.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/goodreads.svg b/llink/images/icons/goodreads.svg new file mode 100644 index 0000000..7edf57a --- /dev/null +++ b/llink/images/icons/goodreads.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/google-drive.svg b/llink/images/icons/google-drive.svg new file mode 100644 index 0000000..56620e2 --- /dev/null +++ b/llink/images/icons/google-drive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/google-play.svg b/llink/images/icons/google-play.svg new file mode 100644 index 0000000..010d620 --- /dev/null +++ b/llink/images/icons/google-play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/google-podcasts.svg b/llink/images/icons/google-podcasts.svg new file mode 100644 index 0000000..e596211 --- /dev/null +++ b/llink/images/icons/google-podcasts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/google-scholar.svg b/llink/images/icons/google-scholar.svg new file mode 100644 index 0000000..5912082 --- /dev/null +++ b/llink/images/icons/google-scholar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/hashnode.svg b/llink/images/icons/hashnode.svg new file mode 100644 index 0000000..4e42d84 --- /dev/null +++ b/llink/images/icons/hashnode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/instagram.svg b/llink/images/icons/instagram.svg new file mode 100644 index 0000000..841d3e8 --- /dev/null +++ b/llink/images/icons/instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/kick-alt.svg b/llink/images/icons/kick-alt.svg new file mode 100644 index 0000000..f9dd757 --- /dev/null +++ b/llink/images/icons/kick-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/kick.svg b/llink/images/icons/kick.svg new file mode 100644 index 0000000..d4568b6 --- /dev/null +++ b/llink/images/icons/kick.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/kickstarter.svg b/llink/images/icons/kickstarter.svg new file mode 100644 index 0000000..71ce32f --- /dev/null +++ b/llink/images/icons/kickstarter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/kit.svg b/llink/images/icons/kit.svg new file mode 100644 index 0000000..a972f9a --- /dev/null +++ b/llink/images/icons/kit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/ko-fi.svg b/llink/images/icons/ko-fi.svg new file mode 100644 index 0000000..8bcd685 --- /dev/null +++ b/llink/images/icons/ko-fi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/last-fm.svg b/llink/images/icons/last-fm.svg new file mode 100644 index 0000000..503b94d --- /dev/null +++ b/llink/images/icons/last-fm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/letterboxd.svg b/llink/images/icons/letterboxd.svg new file mode 100644 index 0000000..d6c518d --- /dev/null +++ b/llink/images/icons/letterboxd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/line.svg b/llink/images/icons/line.svg new file mode 100644 index 0000000..11f9b43 --- /dev/null +++ b/llink/images/icons/line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/linkedin.svg b/llink/images/icons/linkedin.svg new file mode 100644 index 0000000..e323d7e --- /dev/null +++ b/llink/images/icons/linkedin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/littlelink.svg b/llink/images/icons/littlelink.svg new file mode 100644 index 0000000..3a5a007 --- /dev/null +++ b/llink/images/icons/littlelink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/mailchimp.svg b/llink/images/icons/mailchimp.svg new file mode 100644 index 0000000..89f12b5 --- /dev/null +++ b/llink/images/icons/mailchimp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/mastodon.svg b/llink/images/icons/mastodon.svg new file mode 100644 index 0000000..c71fe88 --- /dev/null +++ b/llink/images/icons/mastodon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/medium.svg b/llink/images/icons/medium.svg new file mode 100644 index 0000000..e8ea647 --- /dev/null +++ b/llink/images/icons/medium.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/messenger.svg b/llink/images/icons/messenger.svg new file mode 100644 index 0000000..c638a64 --- /dev/null +++ b/llink/images/icons/messenger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/microsoft.svg b/llink/images/icons/microsoft.svg new file mode 100644 index 0000000..a50ed2d --- /dev/null +++ b/llink/images/icons/microsoft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/ngl.svg b/llink/images/icons/ngl.svg new file mode 100644 index 0000000..b91d77c --- /dev/null +++ b/llink/images/icons/ngl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/notion.svg b/llink/images/icons/notion.svg new file mode 100644 index 0000000..fb878e0 --- /dev/null +++ b/llink/images/icons/notion.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/onlyfans.svg b/llink/images/icons/onlyfans.svg new file mode 100644 index 0000000..82288e3 --- /dev/null +++ b/llink/images/icons/onlyfans.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/patreon.svg b/llink/images/icons/patreon.svg new file mode 100644 index 0000000..46abf0f --- /dev/null +++ b/llink/images/icons/patreon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/paypal.svg b/llink/images/icons/paypal.svg new file mode 100644 index 0000000..0803426 --- /dev/null +++ b/llink/images/icons/paypal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/pinterest.svg b/llink/images/icons/pinterest.svg new file mode 100644 index 0000000..76af8b4 --- /dev/null +++ b/llink/images/icons/pinterest.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/product-hunt.svg b/llink/images/icons/product-hunt.svg new file mode 100644 index 0000000..9b578cf --- /dev/null +++ b/llink/images/icons/product-hunt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/read-cv.svg b/llink/images/icons/read-cv.svg new file mode 100644 index 0000000..1d9863c --- /dev/null +++ b/llink/images/icons/read-cv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/redbubble.svg b/llink/images/icons/redbubble.svg new file mode 100644 index 0000000..6d50d58 --- /dev/null +++ b/llink/images/icons/redbubble.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/reddit.svg b/llink/images/icons/reddit.svg new file mode 100644 index 0000000..42728fe --- /dev/null +++ b/llink/images/icons/reddit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/revolut.svg b/llink/images/icons/revolut.svg new file mode 100644 index 0000000..c962f4f --- /dev/null +++ b/llink/images/icons/revolut.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/shop.svg b/llink/images/icons/shop.svg new file mode 100644 index 0000000..fcb1541 --- /dev/null +++ b/llink/images/icons/shop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/signal.svg b/llink/images/icons/signal.svg new file mode 100644 index 0000000..38059c4 --- /dev/null +++ b/llink/images/icons/signal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/slack.svg b/llink/images/icons/slack.svg new file mode 100644 index 0000000..44f8fbf --- /dev/null +++ b/llink/images/icons/slack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/snapchat.svg b/llink/images/icons/snapchat.svg new file mode 100644 index 0000000..224170b --- /dev/null +++ b/llink/images/icons/snapchat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/soundcloud.svg b/llink/images/icons/soundcloud.svg new file mode 100644 index 0000000..2598ed5 --- /dev/null +++ b/llink/images/icons/soundcloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/spotify-alt.svg b/llink/images/icons/spotify-alt.svg new file mode 100644 index 0000000..f51ee41 --- /dev/null +++ b/llink/images/icons/spotify-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/spotify.svg b/llink/images/icons/spotify.svg new file mode 100644 index 0000000..0e5b39c --- /dev/null +++ b/llink/images/icons/spotify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/square.svg b/llink/images/icons/square.svg new file mode 100644 index 0000000..52c42f0 --- /dev/null +++ b/llink/images/icons/square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/stack-overflow.svg b/llink/images/icons/stack-overflow.svg new file mode 100644 index 0000000..282f038 --- /dev/null +++ b/llink/images/icons/stack-overflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/steam.svg b/llink/images/icons/steam.svg new file mode 100644 index 0000000..4da4e0b --- /dev/null +++ b/llink/images/icons/steam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/strava.svg b/llink/images/icons/strava.svg new file mode 100644 index 0000000..4befe82 --- /dev/null +++ b/llink/images/icons/strava.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/substack.svg b/llink/images/icons/substack.svg new file mode 100644 index 0000000..e0ca934 --- /dev/null +++ b/llink/images/icons/substack.svg @@ -0,0 +1,3 @@ + + + diff --git a/llink/images/icons/telegram.svg b/llink/images/icons/telegram.svg new file mode 100644 index 0000000..88b4099 --- /dev/null +++ b/llink/images/icons/telegram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/threads.svg b/llink/images/icons/threads.svg new file mode 100644 index 0000000..d0dab5b --- /dev/null +++ b/llink/images/icons/threads.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/threema.svg b/llink/images/icons/threema.svg new file mode 100644 index 0000000..6a6503d --- /dev/null +++ b/llink/images/icons/threema.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/tiktok.svg b/llink/images/icons/tiktok.svg new file mode 100644 index 0000000..080162c --- /dev/null +++ b/llink/images/icons/tiktok.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/trakt.svg b/llink/images/icons/trakt.svg new file mode 100644 index 0000000..de82e76 --- /dev/null +++ b/llink/images/icons/trakt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/trello.svg b/llink/images/icons/trello.svg new file mode 100644 index 0000000..9bae6e2 --- /dev/null +++ b/llink/images/icons/trello.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/tumblr.svg b/llink/images/icons/tumblr.svg new file mode 100644 index 0000000..d0e93f2 --- /dev/null +++ b/llink/images/icons/tumblr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/twitch.svg b/llink/images/icons/twitch.svg new file mode 100644 index 0000000..7ddd811 --- /dev/null +++ b/llink/images/icons/twitch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/unsplash.svg b/llink/images/icons/unsplash.svg new file mode 100755 index 0000000..b9c608c --- /dev/null +++ b/llink/images/icons/unsplash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/untappd.svg b/llink/images/icons/untappd.svg new file mode 100644 index 0000000..5042594 --- /dev/null +++ b/llink/images/icons/untappd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/upwork.svg b/llink/images/icons/upwork.svg new file mode 100644 index 0000000..2356fc9 --- /dev/null +++ b/llink/images/icons/upwork.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/venmo.svg b/llink/images/icons/venmo.svg new file mode 100644 index 0000000..324eb84 --- /dev/null +++ b/llink/images/icons/venmo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/vimeo.svg b/llink/images/icons/vimeo.svg new file mode 100644 index 0000000..ad2a3ae --- /dev/null +++ b/llink/images/icons/vimeo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/vrchat.svg b/llink/images/icons/vrchat.svg new file mode 100644 index 0000000..4d90ffe --- /dev/null +++ b/llink/images/icons/vrchat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/vsco.svg b/llink/images/icons/vsco.svg new file mode 100644 index 0000000..9059e2c --- /dev/null +++ b/llink/images/icons/vsco.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/whatsapp.svg b/llink/images/icons/whatsapp.svg new file mode 100644 index 0000000..979145b --- /dev/null +++ b/llink/images/icons/whatsapp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/wordpress.svg b/llink/images/icons/wordpress.svg new file mode 100644 index 0000000..dddc9cc --- /dev/null +++ b/llink/images/icons/wordpress.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/x.svg b/llink/images/icons/x.svg new file mode 100644 index 0000000..393e68b --- /dev/null +++ b/llink/images/icons/x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/youtube-music.svg b/llink/images/icons/youtube-music.svg new file mode 100644 index 0000000..ba8cc89 --- /dev/null +++ b/llink/images/icons/youtube-music.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/youtube.svg b/llink/images/icons/youtube.svg new file mode 100644 index 0000000..bdfcb3e --- /dev/null +++ b/llink/images/icons/youtube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/icons/zoom.svg b/llink/images/icons/zoom.svg new file mode 100644 index 0000000..7b864f0 --- /dev/null +++ b/llink/images/icons/zoom.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/llink/images/littlelink.png b/llink/images/littlelink.png new file mode 100644 index 0000000..b38bd43 Binary files /dev/null and b/llink/images/littlelink.png differ diff --git a/llink/images/profile1.jpg b/llink/images/profile1.jpg new file mode 100644 index 0000000..0547f67 Binary files /dev/null and b/llink/images/profile1.jpg differ diff --git a/llink/index.html b/llink/index.html new file mode 100644 index 0000000..527a6b5 --- /dev/null +++ b/llink/index.html @@ -0,0 +1,101 @@ + + + + + Link + + + + + + + + + +
+
+
+ + + + + + + +

Sil Klaasboer

+ + +

An C/C++ software engineer with a passion for electronics and self-hosting.

+ + + + LinkedIn
+ + + GitHub
+ + + + + Discord
+ + + + Email Me
+ + + Call Me
+ +

Privacy Policy | Build your own by forking LittleLink.

+
+
+
+ + diff --git a/llink/privacy.html b/llink/privacy.html new file mode 100644 index 0000000..bbf642b --- /dev/null +++ b/llink/privacy.html @@ -0,0 +1,164 @@ + + + + + + + + LittleLink Privacy Policy + + + + + + + + + + + + + + + + + + + + + +
+
+
+

+ ⬅️ Back to main page +

+ + + + +

🔒 Privacy Overview

+ + +

+ Personal Data collected for the following purposes and using the + following services: +
+
+ + 🧮 Analytics +
+ The services contained in this section enable the Owner to monitor + and analyze web traffic and can be used to keep track of User + behavior. +
+
+ + 1.) Example LLC.
+ Personal Data: + various types of Data as specified in the privacy policy of the + service
+ Privacy Policy +

+ + + +

+ 📦 Displaying Content From External Platforms +
+ This type of service allows you to view content hosted on external + platforms directly from the pages of this website and interact with + them.

+ This type of service might still collect web traffic data for the + pages where the service is installed, even when Users do not use it. +
+
+ + 1.) Example LLC
+ Personal Data: + Usage Data; various types of Data as specified in the privacy + policy of the service +
+ Privacy Policy +

+ + + +

+ 📁 Hosting and Backend Infrastructure +
+ This type of service has the purpose of hosting Data and files that + enable this website to exist. +
+
+ Some services among those listed below, if any, may work through + geographically distributed servers, making it difficult to determine + the actual location where the Personal Data are stored. +
+
+ + 1.) Example LLC.
+ Personal Data: + various types of Data as specified in the privacy policy of the + service +
+ Privacy Policy +

+ +
+
+ + +
+

Build your own by forking LittleLink.

+
+
+
+
+ + + + diff --git a/llink/update_docker.sh b/llink/update_docker.sh new file mode 100755 index 0000000..75a2114 --- /dev/null +++ b/llink/update_docker.sh @@ -0,0 +1,92 @@ +#!/bin/bash + +CONTAINER_NAME=llink +CURRENT_VERSION=$(sudo docker image ls --filter "reference=${CONTAINER_NAME}" --format "{{.Tag}} {{.CreatedAt}}" | grep -v "^latest" | sort -r -k2 | head -n 1 | awk '{print $1}' +) + +increment_container_version() { + if [[ $CURRENT_VERSION =~ ^v([0-9]+)\.([0-9]+)$ ]]; then + MAJOR=${BASH_REMATCH[1]} + MINOR=${BASH_REMATCH[2]} + NEXT_VERSION="v${MAJOR}.$((MINOR + 1))" + else + NEXT_VERSION="Invalid format" + fi + + echo "Current version: $CURRENT_VERSION" + echo "Next version (if Enter is pressed): $NEXT_VERSION" + echo -n "Press Enter to increment, or type a new version to overwrite: " + read INPUT + + if [[ -z "$INPUT" ]]; then + # Increment the version + if [[ $CURRENT_VERSION =~ ^v([0-9]+)\.([0-9]+)$ ]]; then + MAJOR=${BASH_REMATCH[1]} + MINOR=${BASH_REMATCH[2]} + MINOR=$((MINOR + 1)) + CURRENT_VERSION="v${MAJOR}.${MINOR}" + else + echo "Error: Invalid version format. Resetting to v1.0." + CURRENT_VERSION="v1.0" + fi + else + # Overwrite the version + CURRENT_VERSION="$INPUT" + fi + + echo "Updated version: $CURRENT_VERSION" +} + +stop_container() { + if sudo docker ps --filter "name=$CONTAINER_NAME" --filter "status=running" | grep -q "$CONTAINER_NAME"; then + echo "Stopping running container: $CONTAINER_NAME" + sudo docker stop "$CONTAINER_NAME" + fi +} + +build_new_container_image() { + cd /home/silklaasboer/config/llink + echo "Rebuilding container with updated image" + sudo docker build -t ${CONTAINER_NAME}:${CURRENT_VERSION} . +} + +create_new_container_tag() { + echo "Updating container tag with updated image" + sudo docker rmi -f ${CONTAINER_NAME}:latest + sudo docker tag ${CONTAINER_NAME}:${CURRENT_VERSION} ${CONTAINER_NAME}:latest +} + +start_container() { + #mandatory for now bc dockercompose is in another dir + cd /home/silklaasboer/docker + echo "Starting container with updated image" + sudo docker compose up -d llink +} + +image_cleanup() { + local image_count=$(docker images --format "{{.Repository}}:{{.Tag}}" | grep "${CONTAINER_NAME}" | wc -l) + + if (( image_count > 5 )); then + echo "More than 5 images found for ${CONTAINER_NAME}. Cleaning up..." + docker images --format "{{.Repository}}:{{.Tag}} {{.CreatedAt}}" \ + | grep "${CONTAINER_NAME}" \ + | sort -k2 \ + | head -n $((image_count - 5)) \ + | awk '{print $1}' \ + | xargs -r docker rmi -f + echo "Old images removed." + fi +} + +increment_container_version +stop_container +build_new_container_image +create_new_container_tag +start_container +image_cleanup + + + + + + diff --git a/mqtt/docker-compose.yaml b/mqtt/docker-compose.yaml new file mode 100644 index 0000000..58284bf --- /dev/null +++ b/mqtt/docker-compose.yaml @@ -0,0 +1,21 @@ +version: '3.3' + +services: + mosquitto: + container_name: ${CONTAINER_NAME} + image: eclipse-mosquitto + volumes: + - ${HOME_DIR}/${CONTAINER_NAME}:/mosquitto' + - ${HOME_DIR}/${CONTAINER_NAME}/data:/mosquitto/data' + - ${HOME_DIR}/${CONTAINER_NAME}/log:/mosquitto/log' + ports: + - ${PORT_MQTT}:1883 + - ${PORT_WEBSOCKET}:9001 + env_file: + - path: ./mqtt.env + required: true + - path: ../global.env + required: true + environment: + - TZ=${TIMEZONE} + restart: unless-stopped diff --git a/mqtt/mqtt.env b/mqtt/mqtt.env new file mode 100644 index 0000000..57aa0f4 --- /dev/null +++ b/mqtt/mqtt.env @@ -0,0 +1,3 @@ +CONTAINER_NAME=mqtt +PORT_MQTT=1883 +PORT_WEBSOCKET=9001 diff --git a/nginx/docker-compose.yaml b/nginx/docker-compose.yaml new file mode 100644 index 0000000..e074773 --- /dev/null +++ b/nginx/docker-compose.yaml @@ -0,0 +1,28 @@ +version: '3.3' + +networks: + proxy: + external: true + +services: + nginx: + container_name: ${CONTAINER_NAME} + image: 'jc21/nginx-proxy-manager:latest' + restart: unless-stopped + networks: + - proxy + ports: + - ${PORT_HTTP}:80 + - ${PORT_HTTPS}:443 + - ${PORT_ADMINPORTAL}:81 + volumes: + - ${HOME_DIR}/${CONTAINER_NAME}/data:/data + - ${HOME_DIR}/${CONTAINER_NAME}/letsencrypt:/etc/letsencrypt + env_file: + - path: ./nginx.env + required: true + - path: ../global.env + required: true + environment: + - TZ=${TIMEZONE} + diff --git a/nginx/nginx.env b/nginx/nginx.env new file mode 100644 index 0000000..a1a5a87 --- /dev/null +++ b/nginx/nginx.env @@ -0,0 +1,4 @@ +CONTAINER_NAME=nginx +PORT_ADMINPORTAL=81 +PORT_HTTP=80 +PORT_HTTPS=443 diff --git a/nginxwebsite/docker-compose.yaml b/nginxwebsite/docker-compose.yaml new file mode 100644 index 0000000..b106424 --- /dev/null +++ b/nginxwebsite/docker-compose.yaml @@ -0,0 +1,19 @@ +version: '3.3' + +services: + website: + image: nginx:latest + container_name: ${CONTAINER_NAME} + ports: + - ${PORT_HTTP}:80 + volumes: + - ${HOME_DIR}/{CONTAINER_NAME}:/usr/share/nginx/html + env_file: + - path: ./website.env + required: true + - path: ../global.env + required: true + environment: + - TZ=${TIMEZONE} + restart: unless-stopped + diff --git a/nginxwebsite/website.env b/nginxwebsite/website.env new file mode 100644 index 0000000..49197f6 --- /dev/null +++ b/nginxwebsite/website.env @@ -0,0 +1,2 @@ +CONTAINER_NAME=nginxwebsite +PORT_HTTP=9991 diff --git a/obsidian/docker-compose.yaml b/obsidian/docker-compose.yaml new file mode 100644 index 0000000..018b6fa --- /dev/null +++ b/obsidian/docker-compose.yaml @@ -0,0 +1,21 @@ +version: '3.3' + +services: + obsidian: + container_name: ${CONTAINER_NAME} + image: lscr.io/linuxserver/obsidian:latest + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIMEZONE} + ports: + - "${PORT_HTTP}:3000" + - "${PORT_HTTPS}:3001" + volumes: + - ${HOME_DIR}/${CONTAINER_NAME}:/config + env_file: + - path: ./obsidian.env + required: true + - path: ../global.env + required: true + restart: unless-stopped \ No newline at end of file diff --git a/obsidian/obsidian.env b/obsidian/obsidian.env new file mode 100644 index 0000000..a19f2a0 --- /dev/null +++ b/obsidian/obsidian.env @@ -0,0 +1,3 @@ +CONTAINER_NAME=obsidian +PORT_HTTP=3003 +PORT_HTTPS=3004 diff --git a/pihole/docker-compose.yml b/pihole/docker-compose.yml new file mode 100644 index 0000000..31d3398 --- /dev/null +++ b/pihole/docker-compose.yml @@ -0,0 +1,20 @@ +services: + pihole: + container_name: ${CONTAINER_NAME} + image: pihole/pihole:latest + ports: + - ${PORT_DNS}:53/tcp + - ${PORT_DNS}:53/udp + - ${PORT_WEBPORTAL}:80/tcp" + env_file: + - path: ./pihole.env + required: true + - path: ../global.env + required: true + environment: + TZ: ${TIMEZONE} + network_mode: "bridge" + volumes: + - ${HOME_DIR}/${CONTAINER_NAME}/etc-pihole:/etc/pihole + - ${HOME_DIR}/${CONTAINER_NAME}/etc-dnsmasq.d:/etc/dnsmasq.d + restart: unless-stopped \ No newline at end of file diff --git a/pihole/pihole.env b/pihole/pihole.env new file mode 100644 index 0000000..8464fbd --- /dev/null +++ b/pihole/pihole.env @@ -0,0 +1,3 @@ +CONTAINER_NAME=pihole +PORT_DNS=53 +PORT_WEBPORTAL=8053 \ No newline at end of file diff --git a/plantuml/docker-compose.yaml b/plantuml/docker-compose.yaml new file mode 100644 index 0000000..4bd8417 --- /dev/null +++ b/plantuml/docker-compose.yaml @@ -0,0 +1,14 @@ +version: '3.3' + +services: + plantuml: + image: plantuml/plantuml-server:jetty + container_name: ${CONTAINER_NAME} + restart: unless-stopped + ports: + - ${PORT_HTTP}:8080 + env_file: + - path: ./plantuml.env + required: true + environment: + - TZ=${TIMEZONE} diff --git a/plantuml/plantuml.env b/plantuml/plantuml.env new file mode 100644 index 0000000..5e2f850 --- /dev/null +++ b/plantuml/plantuml.env @@ -0,0 +1,2 @@ +CONTAINER_NAME=plantuml +PORT_HTTP=1212 diff --git a/uptimekuma/docker-compose.yaml b/uptimekuma/docker-compose.yaml new file mode 100644 index 0000000..715cdec --- /dev/null +++ b/uptimekuma/docker-compose.yaml @@ -0,0 +1,19 @@ +version: '3.3' + +services: + uptimek: + image: louislam/uptime-kuma:1 + container_name: uptime-kuma + volumes: + - ${HOME_DIR}/${CONTAINER_NAME}:/app/data + - ${DOCKER_SOCK}:/var/run/docker.sock:ro + ports: + - ${PORT_HTTP}:3001 + env_file: + - path: ./uptimekuma.env + required: true + - path: ../global.env + required: true + environment: + - TZ=${TIMEZONE} + restart: unless-stopped diff --git a/uptimekuma/uptimekuma.env b/uptimekuma/uptimekuma.env new file mode 100644 index 0000000..3d6b557 --- /dev/null +++ b/uptimekuma/uptimekuma.env @@ -0,0 +1,3 @@ +CONTAINER_NAME=uptimekuma +PORT_HTTP=3001 +DOCKER_SOCK=/var/run/docker.sock diff --git a/vaultwarden/docker-compose.yaml b/vaultwarden/docker-compose.yaml new file mode 100644 index 0000000..e6d92ac --- /dev/null +++ b/vaultwarden/docker-compose.yaml @@ -0,0 +1,22 @@ +version: '3.3' + +services: + vaultwarden: + container_name: ${CONTAINER_NAME} + image: 'vaultwarden/server:latest' + restart: unless-stopped + volumes: + - ${HOME_DIR}/${CONTAINER_NAME}/:/data/ + environment: + - SIGNUPS_ALLOWED=${SIGNUP_ALLOWED} + - ADMIN_TOKEN=${TOKEN} + - WEB_VAULT_ENABLED=${WEBVAULT_ENABLED} + - TZ=${TIMEZONE} + ports: + - ${PORT_HTTP}:80 + env_file: + - path: ./vaultwarden.env + required: true + - path: ../global.env + required: true + diff --git a/vaultwarden/vaultwarden.env b/vaultwarden/vaultwarden.env new file mode 100644 index 0000000..30b2462 --- /dev/null +++ b/vaultwarden/vaultwarden.env @@ -0,0 +1,12 @@ +CONTAINER_NAME=vaultwarden +PORT_HTTP=8082 +WEBVAULT_ENABLED=true + +#allow new users to sign up and create an account (should be disabled after initial setup) +SIGNUP_ALLOWED=false + +#Token for the admin interface, preferably use a long random string +#One option is to use 'openssl rand -base64 48' +#If not set, the admin panel is disabled +TOKEN= + diff --git a/wireguard/docker-compose.yaml b/wireguard/docker-compose.yaml new file mode 100644 index 0000000..44c85f7 --- /dev/null +++ b/wireguard/docker-compose.yaml @@ -0,0 +1,35 @@ +version: '3.3' + +services: + wireguard: + image: lscr.io/linuxserver/wireguard:latest + container_name: wireguard + cap_add: + - NET_ADMIN + - SYS_MODULE + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIMEZONE} + - SERVERURL=auto + - SERVERPORT=51821 + - PEERS=1 #optional + - PEERDNS=auto #optional + - INTERNAL_SUBNET=10.13.13.0 #optional + - ALLOWEDIPS=0.0.0.0/0 #optional + - PERSISTENTKEEPALIVE_PEERS=all #optional + - LOG_CONFS=true #optional + volumes: + - ${HOME_DIR}/${CONTAINER_NAME}/config:/config + - /lib/modules:/lib/modules #optional + ports: + - ${PORT_WIREGUARD}:51821/udp + env_file: + - path: ./wireguard.env + required: true + - path: ../global.env + required: true + sysctls: + - net.ipv4.conf.all.src_valid_mark=1 + restart: unless-stopped + diff --git a/wireguard/wireguard.env b/wireguard/wireguard.env new file mode 100644 index 0000000..48ee3ed --- /dev/null +++ b/wireguard/wireguard.env @@ -0,0 +1,12 @@ +CONTAINER_NAME=wireguard +PORT_WIREGUARD=51821 +WEBVAULT_ENABLED=true + +#allow new users to sign up and create an account (should be disabled after initial setup) +SIGNUP_ALLOWED=false + +#Token for the admin interface, preferably use a long random string +#One option is to use 'openssl rand -base64 48' +#If not set, the admin panel is disabled +TOKEN= + diff --git a/wpwebsite/docker-compose.yml b/wpwebsite/docker-compose.yml new file mode 100644 index 0000000..0e7dfb1 --- /dev/null +++ b/wpwebsite/docker-compose.yml @@ -0,0 +1,40 @@ +services: + db: + image: mysql:8.0 + restart: unless-stopped + container_name: ${DATABASE_CONTAINER_NAME} + env_file: + - path: ./wordpress.env + required: true + - path: ../global.env + required: true + environment: + MYSQL_DATABASE: ${MYSQL_DB_NAME} + MYSQL_USER: ${MYSQL_DB_USER} + MYSQL_PASSWORD: ${MYSQL_DB_PASSWORD} + MYSQL_ROOT_PASSWORD: ${MYSQL_DB_PASSWORD} + volumes: + - ${HOME_DIR}/${STACK_NAME}/${DATABASE_CONTAINER_NAME}:/var/lib/mysql + wordpress: + depends_on: + - ${DATABASE_CONTAINER_NAME} + ports: + - ${PORT_HTTP}:80 + image: wordpress + restart: unless-stopped + container_name: ${WORDPRESS_CONTAINER_NAME} + env_file: + - path: ./wordpress.env + required: true + - path: ../global.env + required: true + extra_hosts: + ${WORDPRESS_HOSTNAME}: "127.0.1.1" + environment: + VIRTUAL_HOST: ${WORDPRESS_HOSTNAME} + WORDPRESS_DB_HOST: ${DATABASE_CONTAINER_NAME} + WORDPRESS_DB_USER: ${MYSQL_DB_USER} + WORDPRESS_DB_PASSWORD: ${MYSQL_DB_PASSWORD} + WORDPRESS_DB_NAME: ${MYSQL_DB_NAME} + volumes: + - ${HOME_DIR}/${STACK_NAME}/${WORDPRESS_CONTAINER_NAME}:/var/www/html diff --git a/wpwebsite/wordpress.env b/wpwebsite/wordpress.env new file mode 100644 index 0000000..73472d6 --- /dev/null +++ b/wpwebsite/wordpress.env @@ -0,0 +1,9 @@ +STACK_NAME=wpwebsite +WORDPRESS_CONTAINER_NAME=wordpress +DATABASE_CONTAINER_NAME=db +MYSQL_DB_NAME= +MYSQL_DB_USER= +MYSQL_DB_PASSWORD= +MYSQL_DB_ROOT_PASSWORD= +PORT_HTTP=9125 +WORDPRESS_HOSTNAME= \ No newline at end of file