Browse Source

Merge branch 'master' of ssh://medusa.casa.alemor.org:4323/mar/container

feature/startup-from-labels
Mario Alegre 5 years ago
parent
commit
38dcd4679b
  1. 26
      bin/pdm-build
  2. 13
      install.sh
  3. 11
      lib/containers-startup.service
  4. 0
      lib/shflags
  5. 4
      src/debian/Containerfile
  6. 0
      src/debian/assets/bash.bashrc
  7. 0
      src/debian/assets/nanorc
  8. 16
      src/gitea/Containerfile
  9. 2
      src/gitea/assets/app.ini.esh
  10. 0
      src/gitea/assets/bin/db-dump
  11. 0
      src/gitea/assets/bin/db-load
  12. 0
      src/gitea/assets/bin/db-make
  13. 0
      src/gitea/assets/bin/esh
  14. 0
      src/gitea/assets/bin/maint
  15. 0
      src/gitea/assets/crontab
  16. 0
      src/gitea/assets/gitea.service
  17. 0
      src/gitea/assets/pg_hba.conf
  18. 22
      src/nextcloud/Containerfile
  19. 0
      src/nextcloud/assets/apache/nextcloud.conf
  20. 0
      src/nextcloud/assets/bin/db-dump
  21. 0
      src/nextcloud/assets/bin/db-load
  22. 0
      src/nextcloud/assets/bin/db-make
  23. 0
      src/nextcloud/assets/bin/maint
  24. 0
      src/nextcloud/assets/bin/nc-occ
  25. 0
      src/nextcloud/assets/crontab
  26. 0
      src/nextcloud/assets/my.config.php
  27. 0
      src/nextcloud/assets/pg_hba.conf
  28. 0
      src/nextcloud/assets/php/php.ini
  29. 0
      src/nextcloud/assets/php/www.conf
  30. 0
      src/nextcloud/assets/redis.conf
  31. 52
      src/samba/Containerfile
  32. 4
      src/samba/assets/bin/db-dump
  33. 13
      src/samba/assets/bin/db-load
  34. 6
      src/samba/assets/bin/smbadduser
  35. 51
      src/samba/assets/smb.conf
  36. 52
      src/startpage/Containerfile
  37. 40
      src/startpage/assets/config.php
  38. 560
      src/startpage/assets/data.json
  39. 9
      src/startpage/assets/site.conf

26
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!"

13
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

11
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

0
bin/shflags → lib/shflags

4
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

0
src/debian/resources/bash.bashrc → src/debian/assets/bash.bashrc

0
src/debian/resources/nanorc → src/debian/assets/nanorc

16
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
###

2
src/gitea/resources/app.ini.esh → 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]

0
src/gitea/resources/bin/db-dump → src/gitea/assets/bin/db-dump

0
src/gitea/resources/bin/db-load → src/gitea/assets/bin/db-load

0
src/gitea/resources/bin/db-make → src/gitea/assets/bin/db-make

0
src/gitea/resources/bin/esh → src/gitea/assets/bin/esh

0
src/gitea/resources/bin/maint → src/gitea/assets/bin/maint

0
src/gitea/resources/crontab → src/gitea/assets/crontab

0
src/gitea/resources/gitea.service → src/gitea/assets/gitea.service

0
src/gitea/resources/pg_hba.conf → src/gitea/assets/pg_hba.conf

22
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
###

0
src/nextcloud/resources/apache/nextcloud.conf → src/nextcloud/assets/apache/nextcloud.conf

0
src/nextcloud/resources/bin/db-dump → src/nextcloud/assets/bin/db-dump

0
src/nextcloud/resources/bin/db-load → src/nextcloud/assets/bin/db-load

0
src/nextcloud/resources/bin/db-make → src/nextcloud/assets/bin/db-make

0
src/nextcloud/resources/bin/maint → src/nextcloud/assets/bin/maint

0
src/nextcloud/resources/bin/nc-occ → src/nextcloud/assets/bin/nc-occ

0
src/nextcloud/resources/crontab → src/nextcloud/assets/crontab

0
src/nextcloud/resources/my.config.php → src/nextcloud/assets/my.config.php

0
src/nextcloud/resources/pg_hba.conf → src/nextcloud/assets/pg_hba.conf

0
src/nextcloud/resources/php/php.ini → src/nextcloud/assets/php/php.ini

0
src/nextcloud/resources/php/www.conf → src/nextcloud/assets/php/www.conf

0
src/nextcloud/resources/redis.conf → src/nextcloud/assets/redis.conf

52
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

4
src/samba/assets/bin/db-dump

@ -0,0 +1,4 @@
#!/bin/bash
pdbedit -L -w > $1
chown files:files $1

13
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

6
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"

51
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

52
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/

40
src/startpage/assets/config.php

@ -0,0 +1,40 @@
<?php
// Project Title
$projectTitle = 'Browser Startpage';
$projectTitleSub = 'Your unified startpage to use in every browser';
$projectDescription = $projectTitle . ' | ' . $projectTitleSub;
$projectKeywords = 'Bookmark, Speeddial, Startpage, Tiles, Launchpad';
$projectLanguage = 'de'; // langugage of your content (see: http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry)
$projectDirection = 'ltr'; // Reading direction ltr || rtl
// Application-Settings (mobile)
$serveAsApplication = FALSE; // allow running as standalone application (TRUE || FALSE)
$applicationName = 'Startpage';
$applicationNameShort = $applicationName;
// Set Environemt
$cssUrl = 'assets/css/site.css'; // Set the url to retreive the css from
$jsUrl = 'assets/js/site.js'; // Set the url to retrieve the js from
$manifestUrl = 'application.manifest.php'; // This is the name of the manifest-file
// Set php requirements
// none
// Set Data-Environment
$dataUrl = "data/data.json"; // Set the url to retrieve the data from
$content = file_get_contents($dataUrl); // Get the data
$json = json_decode($content, true); // (true) returns the json as array-structure
$counterStartvalue = 1; // Set the Number the counters start with (no change nesseccary)
// Countervalues to start with. Every block gets it's own value, so we don't need to unset it
// The important thing is, header and content must use the same startValue!
$headerCount = $counterStartvalue;
$contentCount = $counterStartvalue;
$header = array_keys($json['content']); // Build header-array (keys of first layer only, because we only need the keys as title)
$content = $json['content']; // Get content-array directly
$bookmarks = $json['bookmarks']; // Get bookmarks-array
$footer = $json['footer']; // Get footer-array
$linktarget = $json['linktarget']; // Set linkTarget
$wallpaper = $json['wallpaper']; // Set Wallpaper
?>

560
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"
}
]
}
}

9
src/startpage/assets/site.conf

@ -0,0 +1,9 @@
<VirtualHost *:80>
DocumentRoot /var/www/html/browserStartpage
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Loading…
Cancel
Save