Snipe-IT ist ein super nützliches Tool für alle, die ihre IT-Hardware und Software im Blick behalten wollen. Damit kannst du deine Geräte, Lizenzen und Zubehörteile verwalten und musst nicht mehr mühsam in irgendwelchen veralteten Listen nachschauen, falls diese überhaupt existieren ;). Außerdem hilft dir Snipe-IT dabei, Wartungen besser zu planen und unnötige Ausfälle wie abgelaufene Zertifikate und Lizenzen zu vermeiden.
Datum | Änderungen |
---|---|
22.02.2025 | Anleitung erstellt |
1. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- Traefik V3 Installation, Konfiguration und CrowdSec-Security
- Optional WatchTower
2. Verzeichnis erstellen
Dafür führst du einfach folgenden Befehl aus:
mkdir -p /opt/containers/snipeit/
3. Docker Compose erstellen
Jetzt legen wir eine neue Docker-Compose-Datei an.
nano /opt/containers/snipeit/docker-compose.yml
Dann kopierst du diesen Inhalt hinein:
services: app: image: snipe/snipe-it:${APP_VERSION:-latest} restart: unless-stopped volumes: - ./storage:/var/lib/snipeit depends_on: db: condition: service_healthy restart: true env_file: - .env labels: - "traefik.enable=true" - "traefik.http.routers.snipeit.entrypoints=websecure" - "traefik.http.routers.snipeit.rule=(Host(`snipeit.euredomain.de`))" - "traefik.http.routers.snipeit.tls=true" - "traefik.http.routers.snipeit.tls.certresolver=http_resolver" - "traefik.http.routers.snipeit.service=snipeit" - "traefik.http.services.snipeit.loadbalancer.server.port=80" - "traefik.docker.network=proxy" - "traefik.http.routers.snipeit.middlewares=default@file" networks: - proxy - default db: image: mariadb:11.5.2 restart: unless-stopped env_file: - .env volumes: - ./db_data:/var/lib/mysql environment: MYSQL_DATABASE: ${DB_DATABASE} MYSQL_USER: ${DB_USERNAME} MYSQL_PASSWORD: ${DB_PASSWORD} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 5s timeout: 1s retries: 5 networks: - default networks: proxy: external: true
- Die Domain bei Traefik noch anpassen
4. .env
erstellen
Damit Snipe-IT richtig läuft, wird eine Konfigurationsdatei benötigt. Diese erstellen wir mit folgendem Befehl:
nano /opt/containers/snipeit/.env
Und kopierst du den folgenden Inhalt hinein:
# -------------------------------------------- # REQUIRED: DOCKER SPECIFIC SETTINGS # -------------------------------------------- APP_VERSION=latest APP_PORT=8000 # -------------------------------------------- # REQUIRED: BASIC APP SETTINGS # -------------------------------------------- APP_ENV=production APP_DEBUG=false # Please regenerate the APP_KEY value by calling `docker compose run --rm app php artisan key:generate --show`. Copy paste the value here APP_KEY=ichbinfalsch APP_URL=https://snipeit.euredomain.de # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - TZ identifier APP_TIMEZONE='Europe/Berlin' APP_LOCALE=de-DE MAX_RESULTS=500 # -------------------------------------------- # REQUIRED: UPLOADED FILE STORAGE SETTINGS # -------------------------------------------- PRIVATE_FILESYSTEM_DISK=local PUBLIC_FILESYSTEM_DISK=local_public # -------------------------------------------- # REQUIRED: DATABASE SETTINGS # -------------------------------------------- DB_CONNECTION=mysql DB_HOST=db DB_PORT='3306' DB_DATABASE=snipeit DB_USERNAME=snipeit DB_PASSWORD=changeme1234 MYSQL_ROOT_PASSWORD=changeme1234 DB_PREFIX=null DB_DUMP_PATH='/usr/bin' DB_CHARSET=utf8mb4 DB_COLLATION=utf8mb4_unicode_ci # -------------------------------------------- # REQUIRED: OUTGOING MAIL SERVER SETTINGS # -------------------------------------------- MAIL_MAILER=smtp MAIL_HOST=mailhog MAIL_PORT=1025 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_TLS_VERIFY_PEER=true MAIL_FROM_ADDR=you@example.com MAIL_FROM_NAME='Snipe-IT' MAIL_REPLYTO_ADDR=you@example.com MAIL_REPLYTO_NAME='Snipe-IT' MAIL_AUTO_EMBED_METHOD='attachment' # -------------------------------------------- # REQUIRED: DATA PROTECTION # -------------------------------------------- ALLOW_BACKUP_DELETE=false ALLOW_DATA_PURGE=false # -------------------------------------------- # REQUIRED: IMAGE LIBRARY # This should be gd or imagick # -------------------------------------------- IMAGE_LIB=gd # -------------------------------------------- # OPTIONAL: BACKUP SETTINGS # -------------------------------------------- MAIL_BACKUP_NOTIFICATION_DRIVER=null MAIL_BACKUP_NOTIFICATION_ADDRESS=null BACKUP_ENV=true # -------------------------------------------- # OPTIONAL: SESSION SETTINGS # -------------------------------------------- SESSION_LIFETIME=12000 EXPIRE_ON_CLOSE=false ENCRYPT=false COOKIE_NAME=snipeit_session COOKIE_DOMAIN=null SECURE_COOKIES=false API_TOKEN_EXPIRATION_YEARS=40 # -------------------------------------------- # OPTIONAL: SECURITY HEADER SETTINGS # -------------------------------------------- APP_TRUSTED_PROXIES=172.31.128.1/18 ALLOW_IFRAMING=false REFERRER_POLICY=same-origin ENABLE_CSP=false CORS_ALLOWED_ORIGINS=null ENABLE_HSTS=false # -------------------------------------------- # OPTIONAL: CACHE SETTINGS # -------------------------------------------- CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=sync CACHE_PREFIX=snipeit # -------------------------------------------- # OPTIONAL: REDIS SETTINGS # -------------------------------------------- REDIS_HOST=null REDIS_PASSWORD=null REDIS_PORT=6379 # -------------------------------------------- # OPTIONAL: MEMCACHED SETTINGS # -------------------------------------------- MEMCACHED_HOST=null MEMCACHED_PORT=null # -------------------------------------------- # OPTIONAL: LOGIN THROTTLING # -------------------------------------------- LOGIN_MAX_ATTEMPTS=5 LOGIN_LOCKOUT_DURATION=60 RESET_PASSWORD_LINK_EXPIRES=900 # -------------------------------------------- # OPTIONAL: MISC # -------------------------------------------- LOG_CHANNEL=stderr LOG_MAX_DAYS=10 APP_LOCKED=false APP_CIPHER=AES-256-CBC APP_FORCE_TLS=false GOOGLE_MAPS_API= LDAP_MEM_LIM=500M LDAP_TIME_LIM=600
Die möglichen Einträge habe ich etwas für diese Anleitung zusammengekürzt und die Werte teilweise auf die Anleitung angepasst. Die genaue Beschreibung gibt es hier in der Dokumentation. https://snipe-it.readme.io/docs/configuration
4.1 App Key generieren
Nun generieren wir uns einen AppKey. Gebt dazu folgendes ein:
cd /opt/containers/snipeit docker compose run --rm app php artisan key:generate --show
Die Ausgabe kopiert ihr nun in die eben erstelle “.env” Datei.
vorher: APP_KEY=ichbinfalsch nachher: APP_KEY=base64:bpPJcNw3suv+nqPeCSOs0mRj8WOAR1KD4z2bVyNv7+4=
4.2 Mail Server anpassen
In der “.env” Datei müsst ihr noch folgende Einstellungen für euren E-Mail Server anpassen:
# -------------------------------------------- # REQUIRED: OUTGOING MAIL SERVER SETTINGS # -------------------------------------------- MAIL_MAILER=smtp MAIL_HOST=mailhog MAIL_PORT=1025 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_TLS_VERIFY_PEER=true MAIL_FROM_ADDR=you@example.com MAIL_FROM_NAME='Snipe-IT' MAIL_REPLYTO_ADDR=you@example.com MAIL_REPLYTO_NAME='Snipe-IT' MAIL_AUTO_EMBED_METHOD='attachment'
4.3 App URL anpassen
Hier setzt ihr die identische URL wie bei Traefik ein:
APP_URL=https://snipeit.euredomain.de
5. Stack starten
Nun kann der Stack gestartet werden.
cd /opt/containers/snipeit docker compose up -d
Im Browser sollte dann folgende Seite erscheinen: