GuiderFöretag och övervakningIT-tillgångar med Snipe-IT

Håll koll på företagets IT-utrustning med Snipe-IT och rootless Podman

Snipe-IT på Debian 13, registret med öppen källkod över företagets datorer, telefoner, licenser och tillbehör, i rootless Podman med MariaDB under en egen användare bakom Caddy, med signerade utlämningar, QR-etiketter, inventeringar och larm via e-post.

Testad på Snipe-IT 8.8.0 på Debian 13 (trixie) på en server hos Melonslab Uppdaterad 14 oktober 2026

Rekommenderad server för guiden

SSD RAID 1 · ECC DDR4 · 10 Gbit

VC-P Alloy · 2 vCPU · 8 GB Minne · 60 GB Lagring

Månadsvis, ingen bindningstid 7 dagars öppet köp

100 kr/mån

Beställ nu
På den här sidan

Det här sätter du upp

Snipe-IT håller ett register över vad företaget äger och vem som har det: datorer och telefoner med serienummer och inventarienummer, programlicenser och deras platser, headset och andra tillbehör, och förbrukningsmaterial som toner. Du lämnar ut saker till personer och tar tillbaka dem, och varje förflyttning loggas. En användare kan få bekräfta det hen tar emot och skriva under på skärmen, och Snipe-IT skriver ut etiketter med QR-koder, påminner om inventeringar och garantier och importerar från kalkylblad.

Snipe-IT görs av Grokability, Inc., ett företag i Kalifornien, och utvecklas öppet på GitHub. Den är öppen källkod under licensen AGPL-3.0, och versionen du kör själv har alla funktioner, även LDAP, SAML och API:t. Grokability säljer den också som tjänst, från 39,99 US-dollar i månaden eller 399,99 om året när vi kollade den 14 oktober 2026: de sköter servern, uppdateringar och underhåll och ger support via e-post. De större paketen lägger till IP-begränsningar, en egen server och VPN. I våra tester tog servern inga kontakter med omvärlden, som steg 20 beskriver.

Här körs Snipe-IT från sin officiella avbild, snipe/snipe-it, som en pod under en egen användare som heter snipeit, med MariaDB för sina data, bakom Caddy från Podman-guiden.

Varje steg nedan har körts på en nyinstallerad Melonslab VC-P Alloy (2 vCPU, 8 GB) med Debian 13:

  • Snipe-IT 8.8.0 startade med MariaDB 12.3. Installationsguiden och den första administratören gjordes via en SSH-tunnel innan Caddy sattes upp, och installationsguiden var stängd efteråt.
  • Login Attempts visade varje besökares riktiga adress, över IPv4 och IPv6, och struntade i en förfalskad X-Forwarded-For-header.
  • Ett företag, två kontor, tre avdelningar och fyra personer skapades, med kategorier, tillverkare, modeller, en egen fältuppsättning med MAC-adress och RAM, och tillgångar med inventarienumren EX-00001 och framåt.
  • En dator lämnades ut till en användare, som fick ett mejl, skrev under i webbläsaren och fick villkoren med sin underskrift som PDF. Datorn togs tillbaka, med ett mejl, och lämnades ut igen via API:t.
  • Utan några e-postinställningar misslyckades utlämningen av en dator med "Server Error", vilket e-postraden i steg 3 förhindrar. Mejlen i den här guiden gick till en SMTP-server för test på samma server.
  • En licens fick fem platser, varav två tilldelades. Ett headset lämnades ut, toner förbrukades och larmet om lågt lager kom via e-post.
  • Ett A4-ark med etiketter kom ut som PDF, och dess QR-koder öppnade rätt tillgångar.
  • Tre datorer importerades från en CSV-fil, en av dem utlämnad till sin användare. En inventering satte nästa till tolv månader fram, och påminnelsen kom via e-post.
  • En kollega i en grupp med bara läsrätt kunde se allt och ändra ingenting. Gränssnittet visades på svenska, för en användare och som standard.
  • Snipe-ITs inbyggda säkerhetskopiering fungerade. Vår egen säkerhetskopia återställdes till en ny installation, under en ny användare med tomma volymer, och inloggningar, API-token och den signerade PDF:en fanns kvar.
  • En uppdatering från 8.7.2 till 8.8.0 körde databasmigreringarna av sig själv, och allt startade igen av sig självt efter en omstart av servern.

Podden använde omkring 260 MB minne, ungefär hälften för MariaDB.

Innan du börjar

Du behöver:

  • en server uppsatt som i Podman-guiden, med Caddy igång;
  • en A-post och en AAAA-post för assets.example.com som pekar på din server;
  • ett e-postkonto att skicka från, för steg 17.

Exemplen använder assets.example.com för Snipe-IT, 203.0.113.10 för serverns IPv4-adress, som ip -brief address show eth0 visar, och Example AB som företag. Byt ut dem genomgående.

1. Skapa användaren

Som root:

useradd -m -s /bin/bash snipeit
loginctl enable-linger snipeit
machinectl shell snipeit@

Allt fram till steg 5 körs som snipeit.

2. Skapa hemligheterna

podman run --rm docker.io/snipe/snipe-it:v8.8.0 php artisan key:generate --show | tr -d '\n' | podman secret create snipeit-app-key -
openssl rand -hex 24 | tr -d '\n' | podman secret create snipeit-db-password -

Den första raden laddar ner Snipe-ITs avbild, omkring 1 GB, och skapar applikationsnyckeln APP_KEY med den. Snipe-IT krypterar sessioner, egna fält som du markerar som krypterade och LDAP-lösenordet med nyckeln. Utan den är en återställd säkerhetskopia till liten nytta, så steg 21 sparar en kopia. Den andra raden skapar databaslösenordet. Båda lagras av Podman, inte i filerna nedan.

3. Definiera podden

mkdir -p ~/.config/containers/systemd
cd ~/.config/containers/systemd

Skapa snipeit.pod:

[Pod]
PodName=snipeit
# Only Caddy, on this server, can reach Snipe-IT: the port is not open to the internet.
PublishPort=127.0.0.1:8196:80

[Install]
WantedBy=default.target

Skapa snipeit-db.container:

[Container]
ContainerName=snipeit-db
Image=docker.io/library/mariadb:12.3
Pod=snipeit.pod
Volume=snipeit-db:/var/lib/mysql
Environment=MARIADB_DATABASE=snipeit MARIADB_USER=snipeit MARIADB_RANDOM_ROOT_PASSWORD=1 MARIADB_AUTO_UPGRADE=1
Secret=snipeit-db-password,type=env,target=MARIADB_PASSWORD
HealthCmd=healthcheck.sh --connect --innodb_initialized
HealthInterval=10s
Notify=healthy
AutoUpdate=registry

[Service]
Restart=always

Och snipeit-app.container:

[Unit]
Requires=snipeit-db.service
After=snipeit-db.service

[Container]
ContainerName=snipeit-app
Image=docker.io/snipe/snipe-it:v8.8.0
Pod=snipeit.pod
Volume=snipeit-data:/var/lib/snipeit
# Step 5 changes this to the public address.
Environment=APP_URL=http://localhost:8196
Environment=APP_TRUSTED_PROXIES=203.0.113.10 APP_TRUSTED_HEADERS=HEADER_X_FORWARDED_FOR,HEADER_X_FORWARDED_PROTO
Environment=APP_TIMEZONE=Europe/Stockholm APP_LOCALE=en-US
# Step 17 replaces this line.
Environment=MAIL_MAILER=log
Environment=DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=snipeit DB_USERNAME=snipeit
Secret=snipeit-app-key,type=env,target=APP_KEY
Secret=snipeit-db-password,type=env,target=DB_PASSWORD

[Service]
Restart=always

Vad inställningarna gör:

  • APP_URL är adressen som Snipe-IT sätter i varje länk, formulär, mejl och QR-kod. Den börjar som adressen till SSH-tunneln i steg 4 och blir https://assets.example.com i steg 5.
  • APP_TRUSTED_PROXIES är adressen som Snipe-IT litar på när den får veta besökarens riktiga adress. Caddys anslutningar kommer in i podden från serverns egen IPv4-adress, som Podman-guiden förklarar, så det är den du anger. Sedan Snipe-IT 8.8 måste APP_TRUSTED_HEADERS också ange vilka headers den ska lita på; utan den visar varje inloggning 203.0.113.10.
  • APP_TIMEZONE ger svensk tid i gränssnittet och för de schemalagda jobben i steg 18.
  • MAIL_MAILER=log gör att Snipe-IT kastar sina mejl tills steg 17 sätter upp utskicket. Helt utan e-postinställningar gör avbildens standardvärden att varje utlämning som skickar ett mejl misslyckas med "Server Error".
  • DB_CONNECTION=mysql pratar med MariaDB på samma sätt som mariadb. Avbilden har bara MySQLs klientverktyg, och med mariadb misslyckas den inbyggda säkerhetskopieringen i steg 21 med "Command not found".
  • MariaDB ligger kvar på 12.3, versionen med långtidsstöd som vår MariaDB-guide använder, och MARIADB_AUTO_UPGRADE uppdaterar dess systemtabeller efter en uppdatering inom den. Snipe-IT har en fast version; steg 22 uppdaterar den.
  • Uppladdade filer, signerade villkor, nycklarna för API:t och de inbyggda säkerhetskopiorna hamnar i volymen snipeit-data; själva registret ligger i databasen.

Starta den:

systemctl --user daemon-reload
systemctl --user start snipeit-pod
systemctl --user enable --now podman-auto-update.timer

Vid första starten skapar Snipe-IT sina databastabeller, vilket tar ungefär en minut. Den är klar när det här skriver ut 302:

curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8196/

4. Kör installationsguiden via en SSH-tunnel

Tills den första administratören finns får alla som öppnar Snipe-IT en installationssida som skapar en, så gör det här innan Snipe-IT går att nå från internet. Öppna en SSH-tunnel till servern från din egen dator:

ssh -L 8196:127.0.0.1:8196 root@203.0.113.10

Öppna http://localhost:8196 i webbläsaren. Då går du direkt till Snipe-IT, inte via Caddy.

  1. Pre-Flight kontrollerar uppsättningen. Varje rad ska vara grön utom Config File, som säger att den inte kan kontrollera om filen .env syns utåt. Det gör den inte, och steg 5 kontrollerar det. Välj Next: Create database tables.
  2. Det här steget säger Nothing to migrate., eftersom tabellerna redan finns, och skapar nycklarna för API:t. Välj Next: Create an Admin User.
  3. Fyll i ett Site Name, till exempel Example AB IT, ditt namn, Email, Username och ett Password på minst 10 tecken. Bocka ur Email my credentials to the email address above, eftersom e-posten kommer i steg 17. Under inställningarna för inventarienummer anger du ett Prefix, till exempel EX-, behåller längden 5 och bockar i Generate auto-incrementing asset tags, så att nya tillgångar får EX-00001, EX-00002 och så vidare. Låt Full Multiple Companies Support vara avstängt för ett enda företag, sätt Default Currency till SEK och välj Next: Save User and Finish.

Snipe-IT loggar in dig och visar översikten. Stäng tunneln med exit.

5. Sätt Caddy framför

Tillbaka på servern, som snipeit, byter du till den publika adressen och slår på säkra cookies, som bara skickas över HTTPS:

sed -i 's|APP_URL=http://localhost:8196|APP_URL=https://assets.example.com SECURE_COOKIES=true|' ~/.config/containers/systemd/snipeit-app.container
systemctl --user daemon-reload
systemctl --user restart snipeit-app

Gå tillbaka till root med exit, byt till machinectl shell caddy@ och lägg till det här blocket sist i ~/Caddyfile:

assets.example.com {
    reverse_proxy 127.0.0.1:8196
}

Starta om Caddy med systemctl --user restart caddy och öppna https://assets.example.com. Logga in med användarnamnet och lösenordet från steg 4. Kontrollera sedan från valfri dator att installationsguiden är stängd och att konfigurationsfilen inte lämnas ut:

curl -s -o /dev/null -w '%{http_code} %{redirect_url}\n' https://assets.example.com/setup
curl -s -o /dev/null -w '%{http_code}\n' https://assets.example.com/.env

Den första ska skriva ut 302 och startsidan, den andra 403.

6. De första inställningarna

Kugghjulet uppe till höger öppnar Admin Settings. Gå igenom de här först:

  • Localization: Default Language för alla som inte har valt något språk, 24-timmarsklocka under Time and Date Display, måndag under Day the Week Starts On och SEK.
  • General Settings: under EULA & Acceptance Preferences skriver du era användarvillkor i Default EULA, till exempel vem som ansvarar för utrustningen och vad som händer när någon slutar, och bockar i Require Signature om användarna ska skriva under på skärmen när de bekräftar något.
  • Notifications: Send alerts to, till exempel it@example.com, och gränserna för lager, garantier och licenser som löper ut, och inventeringar, som steg 15 använder.
  • Security: Enable Two Factor, för att kräva eller tillåta en kod från en autentiseringsapp vid inloggning.

För att använda Snipe-IT på svenska väljer du Swedish under Localization > Default Language för alla. Varje användare kan också välja språk under Edit Profile i menyn med sitt namn uppe till höger.

7. Företag, platser, avdelningar och personer

Avsnittet Settings i vänstermenyn innehåller listorna som allt annat hänvisar till. Skapa, med det orange + ovanför varje lista:

  1. Companies: ditt företag, till exempel Example AB.
  2. Locations: varje kontor, till exempel Stockholm office och Gothenburg office, med ort och land.
  3. Departments: till exempel IT, Sales och Finance, var och en med sitt företag och sin plats.

Lägg sedan till personer med Create New > User högst upp: First Name, Last Name, Username, Email, ett Password och deras Company, Department och Location. This user can login låter dem logga in och se sina egna saker (steg 11). Tills e-posten fungerar låter du Send welcome email to new users vara avstängt och ger dem lösenordet själv.

Snipe-IT kan också hämta användare från Active Directory eller en annan LDAP-server, under Admin Settings > LDAP, och låta dem logga in med enkel inloggning, till exempel via authentik, under SAML eller Google. Vi har inte testat det här. Körs inloggningstjänsten på samma server behöver Snipe-IT en av lösningarna i steg 8 i Podman-guiden för att nå den; med den andra måste APP_TRUSTED_PROXIES ange 10.0.2.0 i stället.

8. Kategorier, modeller och egna fält

Varje tillgång har en modell, och varje modell har en kategori och en tillverkare. Under Settings i vänstermenyn:

  1. Categories: skapa en per sorts sak, med sin Type: Laptops och Phones som Asset, Software som License, Headsets som Accessory och Toner som Consumable. För datorerna bockar du i Use the primary default EULA instead., Require users to confirm acceptance of assets in this category. och Send email to user upon checkin/checkout.
  2. Manufacturers: till exempel Lenovo, Apple, Microsoft, Jabra och HP.
  3. Custom Fields: fält som bara vissa tillgångar har. Sidan har två listor. Under Custom Fields skapar du MAC Address, med Format MAC, och RAM (GB), med NUMERIC. Under Fieldsets skapar du en som heter Laptop, öppnar den och lägger till båda fälten.
  4. Asset Models: till exempel ThinkPad T14 Gen 5 i Laptops från Lenovo, med Fieldset Laptop och en EOL på 48 månader, och iPhone 16 i Phones.

9. Lägg till tillgångar

Välj Create New > Asset. Asset Tag är redan ifyllt, till exempel EX-00001. Välj Model, en Status som Ready to Deploy, Serial och Default Location. Datorns fältuppsättning lägger till MAC Address och RAM (GB). Under Optional Information och Order Related Information fyller du i Purchase Date, Purchase Cost och Warranty i månader. Välj Save.

Tillgångens sida visar allt om den, med historik, när garantin går ut och när den når slutet av sin livslängd, och en QR-kod. Lookup by Asset Tag högst upp hittar en tillgång utifrån inventarienumret.

10. Lämna ut och ta tillbaka

Knapparna uppe till höger på tillgångens sida visar sina namn när du pekar på dem. Välj Checkout, välj User, skriv eventuellt något under Notes och välj Checkout. Med datorkategorin från steg 8 listar sidan vad som kommer att hända: användaren får ett mejl med villkoren och en länk för att bekräfta datorn, och måste skriva under. Om användaren står bredvid dig bockar du i Sign/Accept in place och låter hen bekräfta på din skärm.

I vårt test fick Erik mejlet Asset checked out: EX-00001, följde länken, bockade i I accept 1 item, skrev under med musen och valde Accept this item. Sedan fick han ett mejl med de signerade villkoren som PDF, som också sparas under fliken EULAs hos honom. Reports > Unaccepted Items listar det som ännu inte har bekräftats.

För att ta tillbaka datorn väljer du Checkin på dess sida, väljer en Status, skriver en anteckning som Repa på skärmen och väljer Checkin. Användaren får ett mejl, och fliken History på tillgången visar båda förflyttningarna.

11. Det här ser användarna

Personer utan behörigheter i någon grupp ser bara sina egna saker. När Erik loggade in såg han View Assigned Items, med flikar för hans tillgångar, licenser, tillbehör, förbrukningsmaterial och signerade villkor, och en banner när något väntade på hans bekräftelse, som Accept Assets i hans meny också listar. Listan över tillgångar, andra användare och inställningarna gav honom 403. Under Edit Profile kan användarna byta språk, och sitt namn om Allow users to edit their own profiles är påslaget under General Settings.

12. Licenser, tillbehör och förbrukningsmaterial

  • Licenses, med Create New > License högst upp: ett namn som Microsoft 365 Business Standard, antalet Seats, produktnyckeln och Expiration Date. Checkout på licensen tilldelar en ledig plats till en användare eller en dator; licensens sida visar varje plats och vem som har den.
  • Accessories, med Create New > Accessory: saker du lämnar ut utan att följa varje exemplar, till exempel Jabra Evolve2 65, med ett antal och Min. QTY. Checkout lämnar ut ett till en användare, och Checkin tar tillbaka det.
  • Consumables, med Create New > Consumable: saker som förbrukas, till exempel toner, med ett antal och Min. QTY. När du lämnar ut ett till en användare minskar lagret för gott.

När lagret av ett tillbehör eller förbrukningsmaterial understiger miniminivån mejlar Snipe-IT en rapport om lågt lager till adressen i Send alerts to (steg 18).

13. Etiketter och QR-koder

Under Admin Settings > Labels bockar du i New Label Engine och väljer Save. Sidan listar då etikettmallar för A4- och US-ark och för etikettskrivare från Brother, Dymo och Zebra. Välj din, till exempel Sheets\Avery\L7163_A, ett A4-ark med 14 etiketter, välj under Label visible fields vad varje etikett ska visa, till exempel inventarienummer, modell och serienummer, och välj Save.

För att skriva ut går du till Assets, bockar i tillgångarna, väljer Generate Labels i listan med massåtgärder och väljer Go. Snipe-IT skapar en PDF som du skriver ut i 100 % storlek. Varje etikett har en QR-kod som öppnar tillgångens sida i Snipe-IT och en streckkod med inventarienumret. I vårt test lästes varje QR-kod tillbaka som adressen till sin tillgång.

14. Importera från ett kalkylblad

För att ta in tillgångar som du redan har i ett kalkylblad sparar du det som CSV med kolumnnamn som Snipe-IT känner igen, till exempel:

Asset Tag,Model Name,Category,Manufacturer,Serial,Status,Location,Purchase Date,Purchase Cost,Username,MAC Address,RAM (GB)
EX-00101,ThinkPad T14 Gen 5,Laptops,Lenovo,PF4ABD11,Ready to Deploy,Gothenburg office,2026-06-10,14990,,8c:16:45:aa:cc:11,32
EX-00103,MacBook Air 13 M4,Laptops,Apple,C02ZK1ABCD,Ready to Deploy,Stockholm office,2026-04-02,13995,sara,,16

Välj Import i vänstermenyn, Select File... och filen. Välj sedan Import bredvid den, Assets som CSV import type och Next. Snipe-IT matchar kolumnerna mot sina fält, även de egna fälten; kontrollera matchningen, välj Preview och sedan Process import. Backup before importing? gör en inbyggd säkerhetskopia först.

Modeller, tillverkare och platser som inte finns skapas, och ett Username lämnar ut tillgången till den användaren. Inventarienummer som redan finns hoppas över, om du inte bockar i Update Existing Values?.

15. Inventering

En inventering registrerar att någon har sett en tillgång där den ska vara. Under Admin Settings > Notifications anger du Audit Interval, till exempel 12 månader, och Audit Warning Threshold, till exempel 30 dagar.

För att inventera en tillgång väljer du Audit på dess sida, eller Assets > Due for Audit, skriver en anteckning och väljer Audit. Snipe-IT registrerar Last Audit och sätter Next Audit Date tolv månader fram. Scanner Bulk Audit i samma meny tar emot det ena inventarienumret efter det andra från en streckkodsläsare. Varje natt mejlar Snipe-IT en lista över de tillgångar som ska inventeras inom gränsen.

16. En kollega som bara får läsa

Behörigheter ges till grupper. Under Admin Settings > Groups väljer du det orange +, namnger gruppen, till exempel IT read-only, och ger, med den gröna bocken, Reports Access och behörigheten View under Assets, Licenses, Accessories, Consumables, Components och Users, men inget annat. Lägg till kollegan under Add Users to Group, eller under Groups när du redigerar användaren, och välj Save.

I vårt test kunde Lars i den här gruppen öppna listan över tillgångar, varje tillgång och licenserna, medan redigering, återlämning, att skapa nytt och Admin Settings gav honom 403. Ge Admin Access till dem som ska sköta registret men inte inställningarna, och Super User bara till dem som sköter servern.

17. E-post

Snipe-IT skickar e-post vid utlämning, bekräftelse och återlämning, välkomstmejl och återställning av lösenord, och larmen i steg 18. Med MAIL_MAILER=log från steg 3 kastas alla mejl:

  • utlämning och återlämning fungerar, men användarna får bara veta det när de loggar in, där en banner ber dem bekräfta;
  • I forgot my password på inloggningssidan säger att ett mejl har skickats, men inget kommer fram;
  • inga larm skickas;
  • Admin Settings > General Settings > Test Mail > Send Test visar "Mail could not be sent."

För att skicka e-post pekar du Snipe-IT mot din e-postleverantörs SMTP-server, eller den från guiden om mailserver. Som snipeit sparar du SMTP-lösenordet som en hemlighet:

printf %s 'the-smtp-password' | podman secret create snipeit-mail-password -

Byt sedan i snipeit-app.container ut kommentaren och raden Environment=MAIL_MAILER=log mot de här raderna, med din egen server, ditt konto och dina adresser:

Environment=MAIL_MAILER=smtp MAIL_HOST=mail.example.com MAIL_PORT=587 MAIL_ENCRYPTION=tls MAIL_TLS_VERIFY_PEER=true
Environment=MAIL_USERNAME=assets@example.com MAIL_FROM_ADDR=assets@example.com MAIL_REPLYTO_ADDR=it@example.com
Environment="MAIL_FROM_NAME=Example AB IT" "MAIL_REPLYTO_NAME=Example AB IT"
Secret=snipeit-mail-password,type=env,target=MAIL_PASSWORD

Starta om och kontrollera med Send Test:

systemctl --user daemon-reload
systemctl --user restart snipeit-app

Port 587 med MAIL_ENCRYPTION=tls använder STARTTLS; för port 465, som använder TLS från början, byter du port. Behåll MAIL_TLS_VERIFY_PEER=true: utan den kontrollerar avbilden inte mailserverns certifikat. Vi kontrollerade det mot en SMTP-server för test på vår egen server, med ett självsignerat certifikat på port 587: med raden vägrade Snipe-IT med certificate verify failed, och utan den skickades mejlet ändå. Alla mejl i den här guiden gick till den testservern, så inget lämnade den; vi har inte skickat via en riktig leverantör.

18. Larm och schemalagda jobb

Avbilden kör Laravels schemaläggare en gång i minuten, så du behöver inte sätta upp något cron-jobb. För att se vad den kör, som snipeit:

podman exec -u docker snipeit-app php artisan schedule:list

Varje natt vid midnatt, svensk tid, kontrollerar Snipe-IT lågt lager, garantier och licenser som går ut inom Expiring Alerts Threshold, tillgångar som ska lämnas tillbaka och tillgångar som ska inventeras, och mejlar det den hittar till Send alerts to. Varje söndag vid midnatt gör den en inbyggd säkerhetskopia (steg 21). För att köra en kontroll direkt, till exempel inventeringarna:

podman exec -u docker snipeit-app php artisan snipeit:upcoming-audits

I vårt test kom rapporten om lågt lager och påminnelsen om inventering fram på det här sättet, och containerns logg visade att schemaläggaren körde sina jobb.

19. API:t

Snipe-IT har ett REST-API för skript och andra system. I menyn med ditt namn väljer du Manage API keys > Create New, ger nyckeln ett namn och väljer Create New. Token visas en gång; spara den i din lösenordshanterare. Den har samma behörigheter som ditt konto, så skapa en användare med bara de behörigheter som behövs för ett skript.

För att slå upp en tillgång utifrån inventarienumret, med din token i stället för TOKEN:

curl -s -H 'Authorization: Bearer TOKEN' -H 'Accept: application/json' \
  https://assets.example.com/api/v1/hardware/bytag/EX-00001

För att lämna ut tillgången med ID 1 till användaren med ID 2:

curl -s -X POST -H 'Authorization: Bearer TOKEN' -H 'Accept: application/json' -H 'Content-Type: application/json' \
  -d '{"checkout_to_type": "user", "assigned_user": 2, "note": "Back after repair"}' \
  https://assets.example.com/api/v1/hardware/1/checkout

Svaret börjar med {"status":"success". Snipe-ITs API-referens listar resten.

20. Externa tjänster

Vi avlyssnade serverns DNS-uppslagningar och utgående anslutningar medan Snipe-IT startade, medan tillgångar lämnades ut och togs tillbaka, etiketter skapades, en CSV importerades och en säkerhetskopia gjordes. Det fanns inga: Snipe-IT letar inte efter uppdateringar och skickar inga användningsdata.

I webbläsaren visar Edit Profile en liten bild från secure.gravatar.com, som drivs av Automattic i USA, för användare utan egen bild. Den skickar en hash av fältet Gravatar Email, som är tomt om inte användaren fyller i det, och, som vid varje webbanrop, användarens IP-adress. Profilbilderna i listorna använder Snipe-ITs egen standardbild.

21. Säkerhetskopiera

Snipe-IT har en egen säkerhetskopiering, under Admin Settings > Backups > Generate Backup, som också körs varje söndag. Den skapar en ZIP-fil med databasen, de uppladdade filerna, de signerade villkoren och nycklarna för API:t, som du kan ladda ner från den sidan och återställa med dess knapp Restore. Den har två begränsningar: ZIP-filen ligger kvar i volymen snipeit-data på samma server, och den innehåller inte applikationsnyckeln. Vi skapade en och kontrollerade innehållet, men återställde den inte.

Gör därför också en egen säkerhetskopia. Som snipeit:

umask 077
mkdir -p ~/backup
podman exec snipeit-db sh -c 'mariadb-dump -usnipeit -p"$MARIADB_PASSWORD" --single-transaction snipeit' > ~/backup/snipeit-db.sql
podman volume export snipeit-data > ~/backup/snipeit-data.tar
podman secret inspect --showsecret --format '{{.SecretData}}' snipeit-app-key > ~/backup/app-key.txt

Det är databasen, volymen med alla filer och applikationsnyckeln. Dumpen körs medan Snipe-IT fortsätter att fungera. Kopiera ~/backup till en annan maskin, till exempel med restic, och förvara den säkert: den innehåller hela ert register och nyckeln.

För att återställa på en ny server gör du steg 1 till 3 där, med tre ändringar: hoppa över den första raden i steg 2, eftersom nyckeln kommer från säkerhetskopian, skriv snipeit-app.container med den publika APP_URL och SECURE_COOKIES=true från steg 5 redan på plats, och starta inte podden. Sedan, med säkerhetskopian i ~/backup:

tr -d '\n' < ~/backup/app-key.txt | podman secret create snipeit-app-key -
systemctl --user daemon-reload
podman volume create snipeit-data
podman volume import snipeit-data ~/backup/snipeit-data.tar
systemctl --user start snipeit-db
podman exec -i snipeit-db sh -c 'mariadb -usnipeit -p"$MARIADB_PASSWORD" snipeit' < ~/backup/snipeit-db.sql
systemctl --user start snipeit-app

Genom att bara starta databasen först läses säkerhetskopian in innan Snipe-IT sätter upp en tom databas. Lägg till Caddy som i steg 5, och hemligheten och raderna från steg 17 om du använder e-post. För att i stället återställa över en befintlig installation kör du först systemctl --user stop snipeit-pod och podman volume rm snipeit-db snipeit-data, och hoppar över hemligheten.

Vi testade det genom att ta bort användaren snipeit med allt den hade och återställa till en ny. Alla kunde logga in med sina gamla lösenord, API-token fungerade fortfarande och Eriks signerade PDF fanns kvar.

22. Uppdatera

podman auto-update håller MariaDB 12.3 uppdaterad. Snipe-IT har versionen i sin fil, som dess dokumentation rekommenderar, så du väljer själv när den ska uppdateras. Läs versionsinformationen på GitHub, gör en säkerhetskopia som i steg 21 och byt version, till exempel till v8.8.1:

sed -i 's|snipe-it:v8.8.0|snipe-it:v8.8.1|' ~/.config/containers/systemd/snipeit-app.container
systemctl --user daemon-reload
systemctl --user restart snipeit-app
podman image prune -af

Snipe-IT uppdaterar sin databas när den startar, och journalctl --user -u snipeit-app listar varje migrering den körde. Vår uppdatering från 8.7.2 till 8.8.0 tog under en minut, nedladdningen inräknad, och tillgångar, användare och inställningar fanns kvar efteråt. Den sista raden tar bort den gamla avbilden.

Felsökning

Varje inloggning i Login Attempts har serverns egen adress. APP_TRUSTED_HEADERS saknas, eller APP_TRUSTED_PROXIES anger fel adress. Den måste vara serverns IPv4-adress, inte 127.0.0.1. Rätta det i snipeit-app.container, kör sedan daemon-reload och starta om snipeit-app.

Webbläsaren går till https://assets.example.com under installationsguiden. APP_URL är redan den publika adressen. Sätt den till http://localhost:8196 som i steg 3, kör sedan daemon-reload och starta om snipeit-app.

En utlämning ger "Server Error". Appen saknar helt e-postinställningar. Lägg till Environment=MAIL_MAILER=log som i steg 3, eller sätt upp e-post som i steg 17.

"Mail could not be sent." Snipe-IT skriver orsaken i sin egen logg, inne i containern:

podman exec snipeit-app tail -n 20 storage/logs/laravel.log

certificate verify failed betyder att mailserverns certifikat inte stämmer med MAIL_HOST; använd det värdnamn som leverantören anger.

Den inbyggda säkerhetskopieringen misslyckas med "Command not found". DB_CONNECTION är mariadb. Sätt den till mysql som i steg 3.

Kör det på din egen server

SSD RAID 1 · ECC DDR4 · 10 Gbit

VC-P Alloy

100 kr/mån

vCPU
2
Minne
8 GB
Lagring
60 GB
Trafik
10 TB
Performance
SSD · RAID 1
  • Full root-åtkomst
  • Nativt /64 IPv6
  • RAID-skyddad lagring
  • Malmö, Sverige
  • Månadsvis, ingen bindningstid
  • 7 dagars öppet köp
Alla guider