diff --git a/bin/pdm-build b/bin/pdm-build index d9a6539..cc11720 100755 --- a/bin/pdm-build +++ b/bin/pdm-build @@ -67,17 +67,25 @@ fi echo "Building image ..." podman build -f Containerfile -t tmp $buildopts || quit $? -# start container -echo "Creating container ..." -podman create --name tmp-$epoch tmp || quit $? -podman start tmp-$epoch || quit $? # Systemdfile is for commands that need systemd to execute -echo "Running build steps that require systemd ..." -podman exec tmp-$epoch bash -c "if [ -f /root/Systemdfile ]; then /root/Systemdfile; fi" || quit $? +if [[ -f Systemdfile ]]; then + echo "Running build steps that require systemd ..." + echo "Creating container ..." + podman create --name tmp-$epoch tmp || quit $? + podman start tmp-$epoch || quit $? + echo "Copying script to container ..." + podman cp Systemdfile tmp-$epoch:/root/ + echo "Running script ..." + podman exec tmp-$epoch bash -c "chmod +x /root/Systemdfile && /root/Systemdfile" || quit $? + echo "Committing container to image ..." + podman commit tmp-$epoch $name:$today || quit $? +else + echo "Systemdfile not found, skipping container creation ..." + # tag image we already built with appropriate tag, and untag with tmp + podman tag tmp:latest $name:$today + podman rmi tmp:latest +fi -# commit finalized container state to image -echo "Committing container to image ..." -podman commit tmp-$epoch $name:$today || quit $? # tag with latest tag podman tag $name:$today $name:$FLAGS_tag echo "Done!" diff --git a/install.sh b/install.sh index e69de29..bfe5bd5 100644 --- a/install.sh +++ b/install.sh @@ -0,0 +1,13 @@ +#1/bin/bash + +# todo: actually install podman + +# copy bin files to /usr/local/bin +rsync -vaSH bin/ /usr/local/bin/ + +# copy shflags to /usr/local/bin as well +rsync -vaSH lib/shflags /usr/local/bin/ + +# install systemd startup service +rsync -vaSH lib/containers-startup.service /etc/systemd/system/ +systemctl enable containers-startup.service diff --git a/lib/containers-startup.service b/lib/containers-startup.service new file mode 100644 index 0000000..f129fc7 --- /dev/null +++ b/lib/containers-startup.service @@ -0,0 +1,11 @@ +[Unit] +Description=Containers startup script +Wants=network.target +After=network-online.target + +[Service] +ExecStart=/etc/containers/startup.sh +Type=forking + +[Install] +WantedBy=default.target diff --git a/bin/shflags b/lib/shflags similarity index 100% rename from bin/shflags rename to lib/shflags diff --git a/src/debian/Containerfile b/src/debian/Containerfile index 777a5fa..2326dc3 100644 --- a/src/debian/Containerfile +++ b/src/debian/Containerfile @@ -19,5 +19,5 @@ RUN apt autoremove -y --purge RUN apt clean -y # Set configuration -COPY resources/nanorc /etc/nanorc -COPY resources/bash.bashrc /etc/bash.bashrc +COPY assets/nanorc /etc/nanorc +COPY assets/bash.bashrc /etc/bash.bashrc diff --git a/src/debian/resources/bash.bashrc b/src/debian/assets/bash.bashrc similarity index 100% rename from src/debian/resources/bash.bashrc rename to src/debian/assets/bash.bashrc diff --git a/src/debian/resources/nanorc b/src/debian/assets/nanorc similarity index 100% rename from src/debian/resources/nanorc rename to src/debian/assets/nanorc diff --git a/src/gitea/Containerfile b/src/gitea/Containerfile index 9eed7e4..6805018 100644 --- a/src/gitea/Containerfile +++ b/src/gitea/Containerfile @@ -38,14 +38,14 @@ RUN addgroup --gid $FILESUID gitea && \ adduser gitea --ingroup gitea --uid $FILESUID --disabled-password --gecos "Gitea Server" --shell /usr/sbin/nologin # copy our custom scripts -COPY resources/bin/ /usr/local/bin/ +COPY assets/bin/ /usr/local/bin/ ### ### PostgreSQL ### ### # configure PostgreSQL access -COPY --chown=postgres:postgres resources/pg_hba.conf /etc/postgresql/${psqlv}/main/pg_hba.conf +COPY --chown=postgres:postgres assets/pg_hba.conf /etc/postgresql/${psqlv}/main/pg_hba.conf ### ### Gitea @@ -64,27 +64,21 @@ RUN mkdir -p /var/lib/gitea/ && \ chmod -R 750 /var/lib/gitea/ # copy gitea config template -COPY resources/app.ini.esh /etc/gitea/ +COPY assets/app.ini.esh /etc/gitea/ # template config file RUN cd /etc/gitea/ && \ esh app.ini.esh > app.ini && \ rm app.ini.esh && \ chmod -R +r /etc/gitea/ -COPY resources/gitea.service /etc/systemd/system/ +COPY assets/gitea.service /etc/systemd/system/ ### ### Crontab ### -COPY resources/crontab /root/ +COPY assets/crontab /root/ RUN crontab -u gitea /root/crontab -### -### Systemdfile -### -COPY Systemdfile /root/ -RUN chmod +x /root/Systemdfile - ### ### Bugfix ### diff --git a/src/gitea/resources/app.ini.esh b/src/gitea/assets/app.ini.esh similarity index 98% rename from src/gitea/resources/app.ini.esh rename to src/gitea/assets/app.ini.esh index a9f22ce..0a731cb 100644 --- a/src/gitea/resources/app.ini.esh +++ b/src/gitea/assets/app.ini.esh @@ -57,7 +57,7 @@ DISABLE_GRAVATAR = true ENABLE_FEDERATED_AVATAR = false [openid] -ENABLE_OPENID_SIGNIN = true +ENABLE_OPENID_SIGNIN = false ENABLE_OPENID_SIGNUP = false [session] diff --git a/src/gitea/resources/bin/db-dump b/src/gitea/assets/bin/db-dump similarity index 100% rename from src/gitea/resources/bin/db-dump rename to src/gitea/assets/bin/db-dump diff --git a/src/gitea/resources/bin/db-load b/src/gitea/assets/bin/db-load similarity index 100% rename from src/gitea/resources/bin/db-load rename to src/gitea/assets/bin/db-load diff --git a/src/gitea/resources/bin/db-make b/src/gitea/assets/bin/db-make similarity index 100% rename from src/gitea/resources/bin/db-make rename to src/gitea/assets/bin/db-make diff --git a/src/gitea/resources/bin/esh b/src/gitea/assets/bin/esh similarity index 100% rename from src/gitea/resources/bin/esh rename to src/gitea/assets/bin/esh diff --git a/src/gitea/resources/bin/maint b/src/gitea/assets/bin/maint similarity index 100% rename from src/gitea/resources/bin/maint rename to src/gitea/assets/bin/maint diff --git a/src/gitea/resources/crontab b/src/gitea/assets/crontab similarity index 100% rename from src/gitea/resources/crontab rename to src/gitea/assets/crontab diff --git a/src/gitea/resources/gitea.service b/src/gitea/assets/gitea.service similarity index 100% rename from src/gitea/resources/gitea.service rename to src/gitea/assets/gitea.service diff --git a/src/gitea/resources/pg_hba.conf b/src/gitea/assets/pg_hba.conf similarity index 100% rename from src/gitea/resources/pg_hba.conf rename to src/gitea/assets/pg_hba.conf diff --git a/src/nextcloud/Containerfile b/src/nextcloud/Containerfile index 4085abd..f65e575 100644 --- a/src/nextcloud/Containerfile +++ b/src/nextcloud/Containerfile @@ -42,7 +42,7 @@ RUN usermod --uid $FILESUID www-data && \ chown -R www-data:www-data /var/www /vol # copy our custom scripts -COPY resources/bin/ /usr/local/bin/ +COPY assets/bin/ /usr/local/bin/ ### ### Apache @@ -52,7 +52,7 @@ COPY resources/bin/ /usr/local/bin/ RUN a2enmod rewrite headers env dir mime proxy_fcgi && a2enconf php${phpv}-fpm # copy site config -COPY resources/apache/nextcloud.conf /etc/apache2/sites-available/ +COPY assets/apache/nextcloud.conf /etc/apache2/sites-available/ WORKDIR /etc/apache2/sites-enabled RUN rm 000-default.conf && ln -s ../sites-available/nextcloud.conf @@ -64,15 +64,15 @@ RUN rm 000-default.conf && ln -s ../sites-available/nextcloud.conf RUN systemctl enable php${phpv}-fpm # copy php configuration -COPY resources/php/php.ini /etc/php/${phpv}/fpm/ -COPY resources/php/www.conf /etc/php/${phpv}/fpm/pool.d/ +COPY assets/php/php.ini /etc/php/${phpv}/fpm/ +COPY assets/php/www.conf /etc/php/${phpv}/fpm/pool.d/ ### ### Redis ### # copy redis config -COPY --chown=redis:redis resources/redis.conf /etc/redis/redis.conf +COPY --chown=redis:redis assets/redis.conf /etc/redis/redis.conf # add www-data to redis group so it can use the socket RUN usermod -a -G redis www-data @@ -82,7 +82,7 @@ RUN usermod -a -G redis www-data ### # configure PostgreSQL access -COPY --chown=postgres:postgres resources/pg_hba.conf /etc/postgresql/${psqlv}/main/pg_hba.conf +COPY --chown=postgres:postgres assets/pg_hba.conf /etc/postgresql/${psqlv}/main/pg_hba.conf ### ### Nextcloud @@ -97,21 +97,15 @@ RUN wget https://download.nextcloud.com/server/releases/latest.zip && \ rm latest.zip # copy nextcloud config -COPY --chown=www-data:www-data resources/my.config.php nextcloud/config/ +COPY --chown=www-data:www-data assets/my.config.php nextcloud/config/ ### ### Crontab ### -COPY resources/crontab /root/ +COPY assets/crontab /root/ # crontab for www-data RUN crontab -u www-data /root/crontab -### -### Systemdfile -### -COPY Systemdfile /root/ -RUN chmod +x /root/Systemdfile - ### ### Bugfix ### diff --git a/src/nextcloud/resources/apache/nextcloud.conf b/src/nextcloud/assets/apache/nextcloud.conf similarity index 100% rename from src/nextcloud/resources/apache/nextcloud.conf rename to src/nextcloud/assets/apache/nextcloud.conf diff --git a/src/nextcloud/resources/bin/db-dump b/src/nextcloud/assets/bin/db-dump similarity index 100% rename from src/nextcloud/resources/bin/db-dump rename to src/nextcloud/assets/bin/db-dump diff --git a/src/nextcloud/resources/bin/db-load b/src/nextcloud/assets/bin/db-load similarity index 100% rename from src/nextcloud/resources/bin/db-load rename to src/nextcloud/assets/bin/db-load diff --git a/src/nextcloud/resources/bin/db-make b/src/nextcloud/assets/bin/db-make similarity index 100% rename from src/nextcloud/resources/bin/db-make rename to src/nextcloud/assets/bin/db-make diff --git a/src/nextcloud/resources/bin/maint b/src/nextcloud/assets/bin/maint similarity index 100% rename from src/nextcloud/resources/bin/maint rename to src/nextcloud/assets/bin/maint diff --git a/src/nextcloud/resources/bin/nc-occ b/src/nextcloud/assets/bin/nc-occ similarity index 100% rename from src/nextcloud/resources/bin/nc-occ rename to src/nextcloud/assets/bin/nc-occ diff --git a/src/nextcloud/resources/crontab b/src/nextcloud/assets/crontab similarity index 100% rename from src/nextcloud/resources/crontab rename to src/nextcloud/assets/crontab diff --git a/src/nextcloud/resources/my.config.php b/src/nextcloud/assets/my.config.php similarity index 100% rename from src/nextcloud/resources/my.config.php rename to src/nextcloud/assets/my.config.php diff --git a/src/nextcloud/resources/pg_hba.conf b/src/nextcloud/assets/pg_hba.conf similarity index 100% rename from src/nextcloud/resources/pg_hba.conf rename to src/nextcloud/assets/pg_hba.conf diff --git a/src/nextcloud/resources/php/php.ini b/src/nextcloud/assets/php/php.ini similarity index 100% rename from src/nextcloud/resources/php/php.ini rename to src/nextcloud/assets/php/php.ini diff --git a/src/nextcloud/resources/php/www.conf b/src/nextcloud/assets/php/www.conf similarity index 100% rename from src/nextcloud/resources/php/www.conf rename to src/nextcloud/assets/php/www.conf diff --git a/src/nextcloud/resources/redis.conf b/src/nextcloud/assets/redis.conf similarity index 100% rename from src/nextcloud/resources/redis.conf rename to src/nextcloud/assets/redis.conf diff --git a/src/samba/Containerfile b/src/samba/Containerfile new file mode 100644 index 0000000..9785e70 --- /dev/null +++ b/src/samba/Containerfile @@ -0,0 +1,52 @@ +### +### Build Variables +### +FROM localhost/debian:latest + +# deploy options +# -p (port) and -v (volume) both go host:container +LABEL deployopts="\ +-p 9045:445 \ +-v /tank/files/db/samba:/vol/db \ +-v /tank/files/media:/vol/media \ +-v /tank/files/user:/vol/user" +# make sure mount directories exist +RUN mkdir -p /vol/db /vol/media /vol/user + +# uid that the files owner user should have +ARG FILESUID=5000 + +### +### General Setup +### + +# install packages we want +RUN apt update -y && apt install -y samba + +# create gitea user with file owner UID +RUN addgroup --gid $FILESUID files && \ + adduser files --ingroup files --uid $FILESUID --disabled-password --gecos "Files Owner" --shell /usr/sbin/nologin --no-create-home + +RUN chown -R files:files /vol + +# copy our custom scripts +COPY assets/bin/ /usr/local/bin/ + +RUN ls -A /home + +# replace home with symlink +RUN cd / && rmdir home && ln -s /vol/user home + +### +### NMBD +### + +# disable NMBD +RUN systemctl disable nmbd + +### +### SMBD +### + +# copy samba config +COPY assets/smb.conf /etc/samba/smb.conf diff --git a/src/samba/assets/bin/db-dump b/src/samba/assets/bin/db-dump new file mode 100755 index 0000000..ac303c2 --- /dev/null +++ b/src/samba/assets/bin/db-dump @@ -0,0 +1,4 @@ +#!/bin/bash + +pdbedit -L -w > $1 +chown files:files $1 diff --git a/src/samba/assets/bin/db-load b/src/samba/assets/bin/db-load new file mode 100755 index 0000000..06c4148 --- /dev/null +++ b/src/samba/assets/bin/db-load @@ -0,0 +1,13 @@ +#!/bin/bash + +while read line; do + user=$(echo "$line" | cut -d':' -f1) + # only create user if doesn't exist + if [[ -z $(getent passwd $user) ]]; then + adduser "$user" --disabled-password --gecos "" --no-create-home --shell /usr/sbin/nologin + usermod -a -G sambashare "$user" + fi +done < $1 + +# import passwords file +pdbedit -i smbpasswd:$1 diff --git a/src/samba/assets/bin/smbadduser b/src/samba/assets/bin/smbadduser new file mode 100755 index 0000000..7a996af --- /dev/null +++ b/src/samba/assets/bin/smbadduser @@ -0,0 +1,6 @@ +#!/bin/sh +if [[ -z $(getent passwd "$1") ]]; then + adduser "$1" --disabled-password --gecos "" --no-create-home --shell /usr/sbin/nologin + usermod -a -G sambashare "$1" +fi +smbpasswd -a "$1" diff --git a/src/samba/assets/smb.conf b/src/samba/assets/smb.conf new file mode 100644 index 0000000..a4909ad --- /dev/null +++ b/src/samba/assets/smb.conf @@ -0,0 +1,51 @@ +#======================= Global Settings ======================= +[global] +### General ### +server string = medusa +server role = standalone server +disable netbios = yes +smb ports = 445 + +#### Logging #### +log file = /var/log/samba/smb.log +max log size = 1000 + +####### Authentication ####### +passdb backend = tdbsam +map to guest = bad user + +### Permissions ## +# The following settings configure all shares to use the filesrv user on the backend +force user = files +force group = files +create mask = 0644 +directory mask = 0755 +force create mode = 0644 +force directory mode = 0755 +unix extensions = yes +map archive = no +map system = no +map hidden = no + +### Printing ### +# Disable all printing +load printers = no +printing = bsd +printcap name = /dev/null +disable spoolss = yes + +#======================= Share Definitions ======================= +[media] +comment = Shared media files +path = /vol/media +browsable = yes +guest ok = yes +read only = yes +write list = @sambashare + +[homes] +comment = User homes +browsable = no +guest ok = no +read only = no +valid users = %S diff --git a/src/startpage/Containerfile b/src/startpage/Containerfile new file mode 100644 index 0000000..74b9f48 --- /dev/null +++ b/src/startpage/Containerfile @@ -0,0 +1,52 @@ +### +### Meta Information +### +FROM localhost/debian + +# deploy options +# -p (port) and -v (volume) both go host:container +LABEL deployopts="-p 9082:80" + +# Build Variables +# versions of php and postgres +ARG phpv=7.3 + +### +### General Setup +### + +# install packages we want +RUN apt update -y && apt install -y apache2 libapache2-mod-php php-json + +### +### Apache +### + +# enable modules we need +RUN a2enmod php${phpv} + +# copy site config +COPY assets/site.conf /etc/apache2/sites-available/ +WORKDIR /etc/apache2/sites-enabled +RUN rm 000-default.conf && ln -s ../sites-available/site.conf + +### +### browserStartpage +### + +# download app +WORKDIR /root +RUN wget https://github.com/saschadiercks/browserStartpage/archive/master.zip && \ + echo "Unzipping ..." && \ + unzip -q master.zip && \ + mv browserStartpage-master/htdocs /var/www/html/browserStartpage && \ + chown -R www-data:www-data /var/www/html && \ + rm -r browserStartpage-master + +# copy config +WORKDIR /var/www/html/browserStartpage +COPY --chown=www-data:www-data assets/config.php config/config.php +COPY --chown=www-data:www-data assets/data.json data/data.json + +# copy assets +#COPY --chown=www-data:www-data assets/assets/ assets/ diff --git a/src/startpage/assets/config.php b/src/startpage/assets/config.php new file mode 100644 index 0000000..5ac9809 --- /dev/null +++ b/src/startpage/assets/config.php @@ -0,0 +1,40 @@ + diff --git a/src/startpage/assets/data.json b/src/startpage/assets/data.json new file mode 100644 index 0000000..191b080 --- /dev/null +++ b/src/startpage/assets/data.json @@ -0,0 +1,560 @@ +{ + "linktarget" : "_self", + "wallpaper" : "assets/wallpaper/default.jpg", + "content": { + "Browser" : [ + { + "url": "https://github.com/saschadiercks/browserStartpage", + "title": "Fork me on github", + "image": "assets/thumbnails/forkme.png", + "imageQr": "assets/qr-codes/github-project.png" + }, + { + "url": "https://github.com/saschadiercks/browserStartpage", + "title": "Links as modal", + "image": "assets/thumbnails/modal.png", + "modal" : [ + { + "url": "https://www.google.de/chrome/browser/desktop/", + "title": "Chrome" + }, + { + "url": "https://www.mozilla.org/firefox", + "title": "Firefox" + }, + { + "url": "https://www.mozilla.org/de/firefox/developer/", + "title": "Firefox (Dev)" + }, + { + "url": "https://developer.apple.com/safari/technology-preview/", + "title": "Safari (TP)" + }, + { + "url": "https://vivaldi.com", + "title": "Vivaldi" + }, + { + "url": "https://blisk.io/", + "title": "Blisk" + }, + { + "url": "https://developer.microsoft.com/en-us/microsoft-edge/tools/", + "title": "Modern IE" + } + ] + }, + { + "url": "https://www.google.de/chrome/browser/desktop/", + "title": "Chrome", + "image": "assets/thumbnails/chrome.png" + }, + { + "url": "https://www.mozilla.org/firefox", + "title": "Firefox", + "image": "assets/thumbnails/firefox.png" + }, + { + "url": "https://www.mozilla.org/de/firefox/developer/", + "title": "Firefox (Dev)", + "image": "assets/thumbnails/firefox-dev.png" + }, + { + "url": "https://developer.apple.com/safari/technology-preview/", + "title": "Safari (TP)", + "image": "assets/thumbnails/safari-tp.png" + }, + { + "url": "https://vivaldi.com", + "title": "Vivaldi", + "image": "assets/thumbnails/vivaldi.png" + }, + { + "url": "https://blisk.io/", + "title": "Blisk", + "image": "assets/thumbnails/blisk.png" + }, + { + "url": "https://developer.microsoft.com/en-us/microsoft-edge/tools/", + "title": "Modern IE", + "image": "assets/thumbnails/modern-ie.png" + } + ], + "Dev" : [ + { + "url": "http://schema.org/docs/schemas.html", + "title": "Schema.org", + "image": "assets/thumbnails/schema.png" + }, + { + "url": "https://html.spec.whatwg.org/multipage/forms.html#autofill", + "title": "Autocomplete", + "image": "assets/thumbnails/autocomplete.png" + }, + { + "url": "http://microformats.org/wiki/hcard-input-formats", + "title": "Microformats", + "image": "assets/thumbnails/microformats.png" + }, + { + "url": "https://github.com/", + "title": "Github", + "image": "assets/thumbnails/github.png" + }, + { + "url": "https://bitbucket.org/", + "title": "Bitbucket", + "image": "assets/thumbnails/bitbucket.png" + }, + { + "url": "https://validator.w3.org/nu/", + "title": "HTML-Validator", + "image": "assets/thumbnails/html-validator.png" + }, + { + "url": "https://developers.google.com/structured-data/testing-tool/", + "title": "RichSnippet-Testing", + "image": "assets/thumbnails/rich-snippet.png" + }, + { + "url": "https://developers.google.com/speed/pagespeed/insights/?hl=de", + "title": "Google Pagespeeds", + "image": "assets/thumbnails/pagespeed.png" + }, + { + "url": "https://search.google.com/test/mobile-friendly", + "title": "Google Mobiltest", + "image": "assets/thumbnails/mobile-friendly.png" + }, + { + "url": "https://www.google.com/webmasters/tools/", + "title": "Google Webmaster-Tools", + "image": "assets/thumbnails/webmastertools.png" + }, + { + "url": "https://analytics.google.com/", + "title": "Analytics", + "image": "assets/thumbnails/analytics.png" + }, + { + "url": "https://github.com/dypsilon/frontend-dev-bookmarks", + "title": "Frontend Bookmarks", + "image": "assets/thumbnails/frontend-bookmarks.png" + }, + { + "url": "https://developer.mozilla.org/de/", + "title": "Mozilla (dev)", + "image": "assets/thumbnails/mozilla-dev.png" + }, + { + "url": "https://developers.google.com/web/?hl=de", + "title": "Google (dev)", + "image": "assets/thumbnails/google-dev.png" + }, + { + "url": "http://codepen.io/patterns/", + "title": "Codepen patterns", + "image": "assets/thumbnails/codepen-patterns.png" + }, + { + "url": "http://browserl.ist/", + "title": "Browserlist", + "image": "assets/thumbnails/browserlist.png" + }, + { + "url": "https://www.codecademy.com", + "title": "Codecademy", + "image": "assets/thumbnails/codecademy.png" + }, + { + "url": "http://tools.pingdom.com/fpt/", + "title": "Pingdom", + "image": "assets/thumbnails/pingdom.png" + }, + { + "url": "https://dequeuniversity.com/library/", + "title": "Accessibility Library", + "image": "assets/thumbnails/accessibility.png" + }, + { + "url": "https://pixabay.com/de/", + "title": "Pixabay", + "image": "assets/thumbnails/pixabay.png" + }, + { + "url": "https://npms.io/search?term=hyperterm", + "title": "npms.io", + "image": "assets/thumbnails/npms-io.png" + } + ], + "Design" : [ + { + "url" : "https://www.microsoft.com/en-us/design", + "image": "assets/thumbnails/design-microsoft.png", + "title": "Microsoft Design" + }, + { + "url" : "https://design.google/resources/", + "image": "assets/thumbnails/design-google.png", + "title": "Google Design" + }, + { + "url" : "https://material.io/", + "image": "assets/thumbnails/design-material.png", + "title": "Material Design" + }, + { + "url" : "https://design.firefox.com/", + "image": "assets/thumbnails/design-firefox.png", + "title": "Firefox Design" + }, + { + "url" : "http://facebook.design", + "image": "assets/thumbnails/design-facebook.png", + "title": "Facebook Design" + }, + { + "url" : "https://design.trello.com/", + "image": "assets/thumbnails/trello.png", + "title": "Trello Design" + }, + { + "url" : "https://github.com/showcases/design-essentials", + "image": "assets/thumbnails/github.png", + "title": "Github Design Essentials" + }, + { + "url" : "https://www.uber.design", + "image": "assets/thumbnails/design-uber.png", + "title": "Uber design" + }, + { + "url" : "https://airbnb.design", + "image": "assets/thumbnails/design-airbnb.png", + "title": "airbnb Design" + }, + { + "url" : "https://atlassian.design", + "image": "assets/thumbnails/design-atlassian.png", + "title": "Atlassian Design" + }, + + { + "url" : "https://unsplash.com/search/photos/macbook", + "image": "assets/thumbnails/design-unsplash.png", + "title": "Unsplash" + }, + { + "url" : "http://magicmockups.com/", + "image": "assets/thumbnails/magic-mockups.png", + "title": "Magic Mockups" + }, + { + "url" : "http://smartmockups.com/", + "image": "assets/thumbnails/smartmockups.png", + "title": "Smart Mockups" + }, + { + "url" : "https://www.designbetter.co", + "image": "assets/thumbnails/design-invision.png", + "title": "Design better" + } + ], + "SDI" : [ + { + "url" : "https://www.saschadiercks.de/", + "image": "assets/thumbnails/sdi-homepage.png", + "imageQr": "assets/qr-codes/metafolio-de.png", + "title": "About me" + }, + { + "url" : "https://design.saschadiercks.de/", + "image": "assets/thumbnails/sdi-blog.png", + "imageQr": "assets/qr-codes/design-system.png", + "title": "SDI Design System" + }, + { + "url" : "https://demo.saschadiercks.de/personalnews/", + "image": "assets/thumbnails/sdi-personalnews.png", + "imageQr": "assets/qr-codes/personalnews-landing.png", + "title": "personalNews" + }, + { + "url" : "https://demo.saschadiercks.de/little-helpers/", + "image": "assets/thumbnails/sdi-little-helpers.png", + "imageQr": "assets/qr-codes/little-helpers.png", + "title": "Little Helpers" + }, + { + "url" : "https://demo.saschadiercks.de/startpage/", + "image": "assets/thumbnails/sdi-startpage.png", + "imageQr": "assets/qr-codes/startpage-demo.png", + "title": "Browser Startpage (this)" + } + ] + }, + "bookmarks" : { + "Frontend" : [ + { + "url": "https://github.com/dypsilon/frontend-dev-bookmarks", + "title": "Frontend Dev Bookmarks" + }, + { + "url": "https://github.com/thedaviddias/Front-End-Checklist", + "title": "Frontend Checklist" + }, + { + "url": "https://github.com/bendc/frontend-guidelines", + "title": "Frontend Guidelines" + }, + { + "url": "http://codeguide.co/", + "title": "Codeguide by @mdo" + }, + { + "url": "https://cssreference.io", + "title": "CSS Reference" + }, + { + "url": "https://cssguidelin.es/", + "title": "CSS Guidelines" + }, + { + "url": "https://bundlephobia.com/", + "title": "Bundlephobia" + }, + { + "url": "https://ausi.github.io/respimagelint/", + "title": "ImageLint for responsive Images" + }, + { + "url": "https://uitest.com/de/", + "title": "UI-Test" + }, + { + "url": "https://whatdoesmysitecost.com/", + "title": "What does my site cost" + }, + { + "url": "https://www.campaignmonitor.com/css/", + "title": "CSS in eMails" + }, + { + "url": "https://webfieldmanual.com/", + "title": "Webfield manual" + }, + { + "url": "https://docs.google.com/spreadsheets/d/1tZYPnzLG0y51QinLxrV97Xflzr2MbTqwWNvaHYN04BE/edit#gid=0", + "title": "Styleguide/Boilerplate patterns" + }, + { + "url": "https://www.filamentgroup.com/lab/font-events.html", + "title": "Font Loading via API" + }, + { + "url" : "https://developer.apple.com", + "title" : "Developer @Apple" + }, + { + "url" : "https://www.interaction-design.org", + "title" : "Interaction Design" + }, + { + "url" : "https://www.barrierefreies-webdesign.de/knowhow/", + "title" : "Barrierefreies Webdesign" + }, + { + "url" : "http://webkrauts.de/", + "title" : "Webkrauts" + }, + { + "url" : "https://a11yproject.com/", + "title" : "A11Y" + }, + { + "url" : "https://www.w3.org/WAI/beta/", + "title" : "WAI" + } + ], + "Frameworks" : [ + { + "url" : "https://bulma.io/", + "title": "Bulma" + }, + { + "url" : "https://getbootstrap.com/", + "title": "Bootstrap" + }, + { + "url" : "https://foundation.zurb.com", + "title": "Foundation" + }, + { + "url" : "https://jquery.com/", + "title": "jQuery" + } + ], + "Design Systems" : [ + { + "url" : "https://www.designsystems.com/", + "title" : "Design Systems (by figma)" + }, + { + "url" : "https://designsystemsrepo.com/", + "title" : "Design Systems Repo" + }, + { + "url" : "https://www.lightningdesignsystem.com/", + "title" : "Lightning Design System" + }, + { + "url" : "http://ux.mailchimp.com/patterns", + "title" : "Mailchimp UX" + }, + { + "url" : "https://www.otto.de/pattern-library/", + "title" : "Otto Pattern Library" + }, + { + "url" : "http://patternlab.io/", + "title" : "Patternlab" + } + ], + "Patterns" : [ + { + "url" : "http://codepen.io/patterns/", + "title" : "Patterns @codepen" + }, + { + "url" : "https://inclusive-components.design/", + "title" : "Inclusive components" + }, + { + "url" : "http://patterntap.com/patterntap", + "title" : "Patterns by Zurb" + }, + { + "url" : "http://ui-patterns.com/", + "title" : "UI-Patterns" + }, + { + "url" : "http://www.goodui.org/", + "title" : "Good UI" + }, + { + "url" : "http://ui-patterns.com/blog/How-to-get-better-at-UI-design", + "title" : "Get better at UI" + } + ], + "Styleguides" : [ + { + "url" : "https://www.designtagebuch.de/wiki/corporate-design-manuals/", + "title" : "Corporate Design manuals" + }, + { + "url" : "https://www.designtagebuch.de/wiki/", + "title" : "Designtagebuch Wiki" + }, + { + "url" : "https://saijogeorge.com/brand-style-guide-examples/", + "title" : "Styleguide Examples" + }, + { + "url" : "http://www.theuxbookmark.com/2010/08/interaction-design/a-monster-list-of-ui-guidelines-style-guides", + "title" : "UX-Bookmark: Styleguides" + } + ], + "Design" : [ + { + "url": "http://makersandfounders.com/DIETER-RAMS", + "title": "Dieter Rams" + }, + { + "url" : "https://www.customspaces.com/", + "title": "Custom spaces" + }, + { + "url" : "https://startupsthisishowdesignworks.com/", + "title": "this is how design works" + } + ], + "Helpers" : [ + { + "url": "http://scrumguides.org/", + "title": "Scrum Guides" + }, + { + "url": "https://support.apple.com/de-de/HT205655", + "title": "Ergonomie @Apple" + }, + { + "url": "http://makerbook.net/", + "title": "Makerbook" + }, + { + "url": "https://www.paypalobjects.com/en_AU/vhelp/paypalmanager_help/credit_card_numbers.htm", + "title": "Test Creditcard Numbers" + }, + { + "url": "https://sizecalc.com", + "title": "Size Calculator" + }, + { + "url": "https://www.flickr.com/photos/jasontravis/sets/72157603258446753/", + "title": "Persona (Flickr)" + }, + { + "url": "https://randomuser.me/", + "title": "Random User Generator" + }, + { + "url": "http://sneakpeekit.com", + "title": "Sketch Sheets for Webdesingers" + }, + { + "url": "http://ctamagazine.unbounce.com/", + "title": "Call to Action Magazine" + } + ], + "eBooks" : [ + { + "url": "https://adaptivewebdesign.info/1st-edition/read/", + "title": "Adaptive Webdesign" + }, + { + "url": "http://eloquentjavascript.net/", + "title": "eloquent Javascipt" + }, + { + "url": "https://resilientwebdesign.com/", + "title": "resilient webdesign" + }, + { + "url": "http://www.thebookoflife.org/", + "title": "The book of life" + } + ] + }, + "footer" : { + "description" : [ + { + "url": "https://github.com/saschadiercks/browserStartpage", + "title": "Fork me on Github" + } + ], + "links" : [ + { + "url": "https://saschadiercks.de", + "title": "home" + }, + { + "url": "https://github.com/saschadiercks", + "title": "github" + }, + { + "url": "https://m.twitter.com/saschadiercks", + "title": "twitter" + } + ] + } +} diff --git a/src/startpage/assets/site.conf b/src/startpage/assets/site.conf new file mode 100644 index 0000000..c1efbc7 --- /dev/null +++ b/src/startpage/assets/site.conf @@ -0,0 +1,9 @@ + + DocumentRoot /var/www/html/browserStartpage + + #LogLevel info ssl:warn + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + +# vim: syntax=apache ts=4 sw=4 sts=4 sr noet