---
title: Fabrik
url: 'https://tucek.me/sv/tech/servers'
markdown: 'https://tucek.me/sv/tech/servers.md'
lang: sv
date: '2026-08-30'
description: 'Fabric-server Jag använder Debian för alla mina servrar, och jag kommer att förklara varför vid ett senare tillfälle. Först måste vi installera ”Fabric”, den server som ska användas för att installera virtuella servrar. Helst bör den inte vara tillgänglig för någon annan än den person som ska admin…'
---

# Fabrik

## Fabric-server

Jag använder [Debian](https://debian.org) för alla mina servrar, och jag kommer att förklara varför vid ett senare tillfälle.

Först måste vi installera ”Fabric”, den server som ska användas för att installera virtuella servrar. Helst bör den inte vara tillgänglig för någon annan än den person som ska administrera den. Det är inget märkligt med det – vi gör en standardinstallation, men avmarkerar det grafiska gränssnittet och väljer ”Öppen SSH-server”.

Efter att vi har installerat operativsystemet måste vi göra några inställningar. Låt oss därför logga in som root.

### Grundläggande konfiguration

#### Skapa språkinställningar

Ställ in systemspråket på engelska för att göra det lättare att upptäcka problem i loggfilerna:

```command
apt install locales-all
localectl set-locale LANG=en_US.utf8
localectl status
```

#### Uppdatera Debian och installera de nödvändiga administrationsverktygen

```command
apt update
apt install wget sudo screen nmap telnet tcpdump rsync net-tools dnsutils htop \
apt-transport-https vim gnupg lsb-release
```

Skapa `nano /etc/sudoers.d/10-nopasswd` och lägg till:

```settings
%emir ALL=(ALL) NOPASSWD: ALL
```

#### Konfigurera VIM

Öppna `nano /etc/vim/vimrc` och ersätt hela innehållet med:

```settings
runtime! debian.vim
syntax on
set background=dark
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
filetype plugin indent on
set encoding=utf-8
set nobackup
set nowritebackup
set showcmd
set updatetime=300
set showmatch
set ignorecase
set smartcase
set incsearch
set tabstop=2
set softtabstop=2
set shiftwidth=2
set expandtab
if filereadable("/etc/vim/vimrc.local")
  source /etc/vim/vimrc.local
endif
```

Skapa en Vim-konfigurationsfil med nano ~/.vimrc och lägg till följande:

```settings
set mouse=
set nocompatible
set cursorline
set nocursorcolumn
set nowrap
set showmode
set hlsearch
set wildmenu
set wildmode=list:longest
set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx
```

Starta om systemet och logga in som vanlig användare. I mitt fall emir.

Ställ in samma Vim-användarinställningar som ovan för den aktuella användaren.

### Virtualisering

#### Konfigurera mappar

```commands
sudo mkdir -p /srv/virt/vmdisks
sudo mkdir -p /srv/virt/iso
```

#### Kontrollera om virtualisering stöds

```commands
egrep -c '(vmx|svm)' /proc/cpuinfo
grep -E --color '(vmx|svm)' /proc/cpuinfo
```

När du kör ovanstående kommandon för att kontrollera om virtualisering är aktiverad eller inte kommer utdata att vara större än noll. Om så inte är fallet måste du först starta om systemet och gå in i systemets BIOS. Aktivera virtualiseringen och starta sedan upp operativsystemet, där du återigen kör ovanstående kommando för att bekräfta detta.

#### Install QEMU-KVM & Libvirt

```command
sudo apt install qemu-system libvirt-daemon-system qemu-kvm \
libvirt-clients libvirt-daemon-system bridge-utils dnsmasq virtinst \
libvirt-daemon virt-manager net-tools
```

#### Aktivera nätverket och ställ in automatisk omstart

```commands
sudo virsh net-start default
sudo virsh net-autostart default
sudo modprobe vhost_net
lsmod | grep vhost
# if vhost_net does not exist in /etc/modules run:
sudo echo "vhost_net" | sudo  tee -a /etc/modules 
```

#### Skapa ett nätverk av broar

Även om KVM levereras med ett nätverksgränssnitt av typen ”virbr0” som är konfigurerat från början, kan vi inte komma åt den virtuella KVM-maskinen från värddatorn via någon annan dator i nätverket på grund av det IP-intervall som tilldelats av detta gränssnitt. Därför ska vi skapa vårt eget fullbridge-gränssnitt över värdsystemets fysiska nätverkskort, som kommer att ha IP-adressintervallet för vårt nätverk.

Hitta det fysiska nätverksgränssnitt som är anslutet till ditt värdsystem och som du vill använda för bryggan `ip a` och redigera filen för ditt nätverksgränssnitt `sudo vim /etc/network/interfaces`.

```settings
source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eno1
auto br0
iface br0 inet static
  address 10.115.100.2/24
  gateway 10.115.100.1
  bridge_ports eno1
  bridge_stp off
  bridge_fd 0
  bridge_maxwait 0
  # dns-* options are implemented by the resolvconf package, if installed
  dns-nameservers 8.8.8.8 8.8.4.4
  dns-search yourdomain.com
```

#### Andra skivan

Läs det här kapitlet om du, precis som jag, använder en separat hårddisk för virtuella maskiner.

Du kan kontrollera om hårddisken har lästs in av servern på flera olika sätt:

Med kommandot `dmesg` kan du se de senaste händelserna på servern. Enheten bör ha tilldelats en /dev/-beteckning (t.ex. /dev/sdc).

```command
dmesg
```

En annan metod du kan använda är att kontrollera om det finns en ny enhet i listan i fdisk:

```command
fdisk -l
```

Oavsett vilken metod du väljer bör enheten visas om operativsystemet har upptäckt den. Om du använder dmesg och enheten har varit ansluten under en längre tid kan du behöva koppla bort och ansluta den på nytt.

När du har kontrollerat att enheten har identifierats av operativsystemet måste du formatera den med den metod du föredrar. (fdisk/parted/etc.) Efter att du har formaterat enheten måste du skapa ett filsystem på den, varefter den är redo att monteras. Se längst ner i det här inlägget för en steg-för-steg-guide om du inte är bekant med formaterings- och filsystemskapningsprocessen.

Skapa en katalog där den nya enheten ska monteras (jag använder den befintliga katalogen /srv):

```command
sudo mkdir -p /new/drive/
```

Montera enheten i den nya katalogen:

```command
sudo mount /dev/sdb1 /new/drive
```

Se till att lägga till följande i `sudo vim /etc/fstab` om du vill att monteringen ska finnas kvar efter en omstart av datorn:

```Setting
/dev/sdb1 /new/drive ext4 defaults 0 1
```

Till exempel: (Om vi antar att den nya enheten är /dev/sdb, att du vill använda ext4 som filsystem och att du planerar att använda hela disken)

```commands
sudo parted /dev/sdb
mklabel
gpt       # label type
mkpart
srv       # partition name
ext4      # File system type (ext3,ext4,etc.)
1         # Partition Starting point
100%      # Partition ending point
quit      # exit parted
sudo mkfs.ext4 /dev/sdb1
```

#### Skapa en lagringspool

En lagringspool kan skapas med hjälp av kommandoradsverktyget virsh. Med kommandoradsverktyget virsh kan du ange alla parametrar. I det här exemplet heter poolen `vmdisks`:

```commands
sudo virsh pool-define-as \
  --name vmdisks \
  --type dir \
  --target /srv/virt/vmdisks
sudo virsh pool-start --build vmdisks
sudo virsh pool-autostart vmdisks
sudo virsh pool-list --all
```

Avsluta med att granska informationen om lagringspoolen:

```command
sudo virsh pool-info vmdisks
```

#### Användbara kommandon

```commands
sudo virsh console VM (or ID) # Escape character is ^] (Ctrl + ])
sudo virsh destroy VM # force shutdown
sudo virsh shutdown VM
sudo virsh start VM
sudo virsh edit VM
sudo virsh undefine VM # delete VM and then delete disk if actuellt
sudo virsh list --all
sudo virsh vncdisplay VM
```

### Konfigurera SSH-inloggning med nycklar

Skapa ett nyckelpar på klienten macshine:

```command
ssh-keygen
```

Överför den offentliga nyckeln till målmaskinen:

```command
ssh-copy-id -i ~/.ssh/id_rsa.pub root@{IP-ADDRESS-OR-FQDN}
```

#### Andra sätt att överföra pub-nyckeln

Du kan kopiera den offentliga nyckeln med scp och sedan köra:

```command
cat id_rsa.pub >> ~/.ssh/authorized_keys
```

Eller från Windows:

```command
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh {IP-ADDRESS-OR-FQDN} "cat >> .ssh/authorized_keys"
```

### Min design

| Server | IPv4-adress | IPv6-adress | Beskrivning |
|---|---|---|---|
| gateway | 10.115.100.1 | fd55:cdbc:12df::1/64 | fire |
| fabric | 10.115.100.2 | fd55:cdbc:12df::2/64 | [KVM host](https://tucek.me/sv/tech/servers) |
| ca | 10.115.100.3 | fd55:cdbc:12df::3/64 | [Certifikatserver](https://tucek.me/sv/tech/servers/ca) |
| dc01 | 10.115.100.4 | fd55:cdbc:12df::4/64 | Domänkontrollant (PDC) |
| dc02 | 10.115.100.5 | fd55:cdbc:12df::5/64 | Andra domänkontrollanten |
| srv01 | 10.115.100.6 | fd55:cdbc:12df::6/64 | Applikationsserver |
| srv02 | 10.115.100.7 | fd55:cdbc:12df::7/64 | HA-applikationsserver |
| mail | 10.115.100.8 | fd55:cdbc:12df::8/64 | E-postserver |

### Virtuella servrar

När det gäller virtuella servrar kommer vi att installera en certifikatserver och två domänkontrollanter ([Dans](https://www.samba.org/)), två databaser ([MariaDB](https://mariadb.org/)) servrar för hög tillgänglighet, e-postserver med webbmail ([iRedMail](https://www.iredmail.org/)), den [Nextcloud](https://nextcloud.com/) server och [Diaspora](https://diasporafoundation.org/) server. Alla tjänster körs på [Debian](https://www.debian.org/) servrar. Även om vi kan sköta allt från [Debian](https://www.debian.org/), så kommer vi till slut att använda [Windows 11](https://www.microsoft.com/software-download/windows11) med RSAT, bara för att visa att det fungerar.

Det finns flera sätt att installera en virtuell server. Vi kan använda VLC för grafisk installation (praktiskt om man installerar Windows). Du kan välja att installera från en ISO-bild som finns på servern eller via internet. Jag brukar installera [Debian](https://debian.org) server via internet och utan grafiskt gränssnitt.

Nu ska vi installera vår första virtuella server. Jag väljer [certifikatserver ->](https://tucek.me/sv/tech/servers/ca)

---

## Navigation

- Parent: [Teknik](https://tucek.me/sv/tech.md)
- Next: [Privata IPv6-adresser](https://tucek.me/sv/tech/private-ipv6-addresses.md)
- Children:
  - [CA-server med Easy-RSA](https://tucek.me/sv/tech/servers/ca.md)
  - [dc01](https://tucek.me/sv/tech/servers/dc01.md)
  - [dc02](https://tucek.me/sv/tech/servers/dc02.md)
