J'ai mis Alpine Linux dans Larkbox et en ai fait mon serveur domestique

introduction

INDIGOGO financement du cloud CHUWI LarkBox . PC de taille minimale avec boîtier: 61x61x43 (H) mm et poids: 127g. Windows10 Home est pré-installé. Les spécifications sont les suivantes.

Device Spec
CPU Intel Celeron J4115
RAM 6GB LPDDR4
espace de rangement 128GB eMMC
Wi-Fi 802.11a/ac/b/g/n
Bluetooth 5.1

En outre, il existe un emplacement pour SSD SATA de 2242, qui peut être étendu jusqu'à 2 To. Il est vendu sur le site de vente par correspondance au prix d'environ 20 000 yens. Le montant de l'investissement dans le financement du cloud était d'environ 16000 yens, donc c'est un peu rentable.

Si vous recherchez "NUC" sur Amazon, vous trouverez une montagne de petits PC avec un concept similaire à LarkBox. Si vous souhaitez l'obtenir à moindre coût grâce au financement du cloud, à partir de 2020/9, INDIGOGO sollicite GMK NucBox , alors pourquoi ne pas postuler?

LarkBox est une mauvaise spécification à utiliser comme un PC Windows, alors mettez Alpine Linux et utilisez-le comme serveur domestique. Comme il a un TDP de 10W, il génère très peu de chaleur et consomme de l'énergie, donc je pense qu'il convient aux serveurs. Cependant, comme il n'y a pas de port LAN câblé, il est fatal en tant que serveur. .. .. Dans les rues, il semble que certaines personnes utilisent Raspai 4 comme serveur domestique, et bien que Raspai 4 ait un port LAN filaire, le CPU est impuissant et il devrait s'agir d'un serveur de fichiers, mais il est vrai que l'application Web fonctionne dur. Je pense que c'est impossible. Je voudrais confirmer tout ce que cela peut être fait avec LarkBox.

Cet article est un rappel de la procédure pour mettre Alpine Linux dans LarkBox.

Ce n'est pas un cliché très alléchant, mais je vais vous donner une photo. Empreinte similaire à 4 piles AA.

larkbox.jpg

Configuration de Larkbox

Sur mon serveur domestique, je souhaite également exécuter la sauvegarde TimeCapsule pour Mac, donc 128 Go de stockage ne suffisent pas. Par conséquent, ajoutez 1 To M2.SSD. Ouvrez le capot arrière et insérez-le dans la fente. Le boîtier est en résine, qui semble avoir une faible performance de dissipation thermique, et lorsque le couvercle arrière en résine est ouvert, il y a un couvercle intérieur en résine et la base est à l'intérieur. Le SSD sera piégé dans un espace étroit entre le couvercle intérieur et le couvercle arrière où aucun air ne circulera et la dissipation de la chaleur est assez angoissante.

Pour accéder au BIOS, appuyez sur le bouton d'alimentation, puis appuyez plusieurs fois sur la touche d'échappement.

Installez Alpine Linux

Téléchargez et installez le package EXTENDED à partir du site Alpine Linux . Au début, j'ai essayé d'installer le package STANDARD, mais le package STANDARD est trop minimal pour être utilisé sans même un ping. Pour Alpine Linux, 128 Go de stockage sont si vastes que je préfère le package EXTENDED ici.

Gravez le fichier ISO téléchargé alpine-extended-3.12.0-x86_64.iso sur une clé USB et démarrez à partir de celle-ci. Connectez-vous en tant que root. (Pas de mot de passe root)

 setup-alpine

Démarrez l'installation avec. Le programme d'installation Alpine Linux ne ressemble pas à un programme d'installation de distribution majeur. Il est nécessaire de répondre aux questions une par une de manière interactive.

Windows Home était pré-installé dans eMMC, mais je l'ai supprimé sans hésitation. Je vais mettre la racine et échanger ici, et mettre / var (250 Go) et / home (750 Go) sur SSD1TB. Je pense à installer uniquement docker directement et à installer les applications nécessaires avec docker-compose. Par conséquent, réservez un grand / var utilisé par docker. Je pense qu'il y a une idée selon laquelle l'itinéraire devrait être mis en SSD au lieu d'une eMMC lente. Je pensais que oui, mais cela n'a pas beaucoup changé, donc je pense que eMMC est d'accord avec l'itinéraire.

La réponse au moment de l'installation est la suivante.

Select keyboard layout: jp
Available variants: jp
Enter system hostname: larkbox
Which one do you want to initialize?: wlan0
Type the wireless network name to connect to: *******
Type the "*******" network Pre-Shared Key: *******
Ip address for wlan0: 192.168.1.xx
Netmask?: 255.255.255.0
Gateway: 192.168.1.1
DNS domain name?
DNS nameserver(s)?: 192.168.1.1
New password: *******
Retype Password: *******
Which timezone are you in?: Asia/Tokyo
TP/FTP proxy URL?: none
Enter mirror number (1-43) or URL to add: f
Which SSH server? (‘openssh’, ‘dropbear’ or ‘none’): openssh
Which NTP client to run? (‘busybox’, ‘openntpd’, ‘chrony’, or ‘none’):chrony
Which disk(s) would you like to use?: mmcblk0
How would you like to use it?: sys 

Pour l'installation, je me suis référé à l'article suivant. https://qiita.com/mo_chiee/items/f539df1bd172f41bc85a Instructions d'installation d'Alpine Linux 3.10.3

https://qiita.com/tohka383/items/e7d758a6281fa45e5e16 Docker on Alpine Linux on VirtualBox

Après avoir répondu à toutes les questions d'installation, mettez à jour le référentiel de packages.

Modifiez / etc / apk / repositories comme suit

/media/cdrom/apks
http://sjc.edge.kernel.org/alpine/v3.12/main
http://sjc.edge.kernel.org/alpine/v3.12/community
http://sjc.edge.kernel.org/alpine/edge/main
http://sjc.edge.kernel.org/alpine/edge/community
http://sjc.edge.kernel.org/alpine/edge/testing

Mis à jour avec la commande suivante.

 apk update
 apk upgrade

Insérer Docker

 apk add docker docker-compose
 service docker start
 rc-update add docker boot

Autoriser sudo

 apk add sudo
 visudo
 %wheel ALL=(ALL) ALL

À

%wheel ALL=(ALL) ALL

changer en

Ajoutez votre propre compte de connexion

 addgroup wheel
# adduser Mon compte de connexion
# adduser la roue de mon compte de connexion
# docker du compte de connexion adduser

Éteindre une fois

 poweroff

Ce n'est pas un arrêt.

Retirez la mémoire USB et modifiez les paramètres du BIOS pour démarrer à partir d'eMMC. Quand je démarre, oh, le réseau n'est pas connecté! Dois-je conserver les paramètres immédiatement après l'installation?

Poursuite de l'installation

paramètres réseau

La première série d'installations a été réalisée avec le script setup-alpine, mais il existe un script setup-xxxx qui n'installe que les éléments individuels. Du script d'installation, la partie des paramètres réseau

 setup-interfaces

Connectez-vous à nouveau au Wifi.

Which one do you want to initialize?: wlan0
Type the wireless network name to connect to: *******
Type the "*******" network Pre-Shared Key: *******
Ip address for wlan0: 192.168.1.xx
Netmask?: 255.255.255.0
Gateway: 192.168.1.1

N'oubliez pas de rendre la connexion persistante.

 rc-update add wpa_supplicant boot

Paramètres du disque

Lors de l'installation initiale, j'ai partitionné la racine et permuté dans l'eMMC et installé le système, mais le SSD 1 To ajouté reste intact. Ensuite, activez le SSD de 1 To.

 setup-disk

Je veux que / var (250 Go) et / home (750 Go) soient placés sur SSD1TB, mais le script de configuration du disque semble ne couper qu'une seule partition.

Available disks are:
  sda   (1024.2 GB ATA      NT-1TB-TM       )
Which disk(s) would you like to use? (or '?' for help or 'none') [sda]
How would you like to use it? ('sys', 'data', 'lvm' or '?' for help) [?] data

En regardant ce qui est arrivé au disque avec ceci,

 df -h
Filesystem                Size      Used Available Use% Mounted on
devtmpfs                 10.0M         0     10.0M   0% /dev
shm                       2.8G         0      2.8G   0% /dev/shm
/dev/mmcblk0p3          110.2G      1.2G    103.4G   1% /
tmpfs                   576.6M    228.0K    576.4M   0% /run
/dev/mmcblk0p1          511.0M    272.0K    510.7M   0% /boot/efi
/dev/sda2               934.0G         0    934.0G   0% /var
cgroup_root              10.0M         0     10.0M   0% /sys/fs/cgroup

/ Var a été créé sur SSD1TB (sda). Supprimez une fois la partition / var et créez à nouveau / var (250 Go) et / home (750 Go).

Obtenez un outil de partitionnement

 apk add -U gptfdisk sgdisk
 gdisk /dev/sda

Repartitionnez le sda avec. L'utilisation de gdisk est la même que celle de fdisk.

Partition d'origine

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         8390655   4.0 GiB     8200
   2         8390656      2000409230   949.9 GiB   8300

Partition modifiée

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         8390655   4.0 GiB     8200
   2         8390656       506395300   237.5 GiB   8300  Linux filesystem
   3       506396672      2000409230   712.4 GiB   8300  Linux filesystem

Redémarrez une fois

 reboot

Formater le disque

 mkfs.ext4 /dev/sda2
 mkfs.ext4 /dev/sda3

Vérifiez l'UUID du disque

 blkid
/dev/mmcblk0p3: UUID="4594ac58-ef59-420e-93f1-423b09cb92ee" TYPE="ext4"
/dev/mmcblk0p2: UUID="387d4b96-060b-4906-80a7-0c066015d468" TYPE="swap"
/dev/mmcblk0p1: UUID="801B-8E71" TYPE="vfat"
/dev/sda3: UUID="346cbfb9-e881-430b-9005-41881ef5bf1c" TYPE="ext4"
/dev/sda2: UUID="14c53e65-b833-4961-b760-3697ea52acbb" TYPE="ext4"
/dev/sda1: UUID="0fe2b3e9-1468-4a73-aa41-a8eed52f91a8" TYPE="swap"

Ajout du point de montage à / etc / fstab

UUID=14c53e65-b833-4961-b760-3697ea52acbb       /var            ext4    defaults 1 2
UUID=346cbfb9-e881-430b-9005-41881ef5bf1c       /home            ext4    defaults 1 2

redémarrer

 reboot

Vérification

 df -h
Filesystem                Size      Used Available Use% Mounted on
devtmpfs                 10.0M         0     10.0M   0% /dev
shm                       2.8G         0      2.8G   0% /dev/shm
/dev/mmcblk0p3          110.2G      1.2G    103.3G   1% /
tmpfs                   576.6M    228.0K    576.4M   0% /run
/dev/mmcblk0p1          511.0M    272.0K    510.7M   0% /boot/efi
/dev/sda2               232.7G     60.4M    220.8G   0% /var
/dev/sda3               700.2G     72.0M    664.5G   0% /home
cgroup_root              10.0M         0     10.0M   0% /sys/fs/cgroup

Installation du système terminée.

Installation du package

Seuls docker, nginx et samba sont installés directement. nginx est utilisé comme proxy inverse qui regroupe plusieurs applications Web. Si vous exécutez samba avec docker, le contrôle fin des informations d'identification est compliqué, alors insérez-le directement.

docker est déjà installé lorsque le système est installé.

samba

Installer la samba

 apk add samba

Paramètres /etc/samba/smb.conf

[global]
   unix charset = UTF-8
   dos charset = CP932
   workgroup = WORKGROUP
   server string = %h server (Samba, Alpine)
   dns proxy = no
   interfaces = 127.0.0.0/8 192.168.1.0/24
   bind interfaces only = yes
   map to guest = Bad User
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   passdb backend = tdbsam
   obey pam restrictions = yes
   unix password sync = no
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes
   fruit:metadata = netatalk
   fruit:encoding = native

[larkbox]
   path = /home/samba/share/
   writable = yes
   browseable = yes
   guest ok = no
   guest only = no
   create mode = 0664
   directory mode = 0775
 utilisateur valide = mon compte

[TimeCapsule]
   comment = Backup for Mac Computers
   path = /home/samba/timecapsule
   writable = yes
   browsable = yes
   guest ok = no
   fruit:time machine = yes
   uit:time machine max size = 500M
 utilisateur valide = mon compte

Enregistrement de l'utilisateur

# pdbedit -a -u mon compte

redémarrer la samba

 service samba restart

Paramètres de démarrage

 rc-update add samba

Définir pour activer la résolution de nom du nom d'hôte

 apk add avahi
 apk add dbus
 rc-update add dbus
 rc-update add avahi-daemon
 service avahi-daemon restart

Paramètres / etc / avahi / services

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
    <name replace-wildcards="yes">%h</name>
    <service>
        <type>_smb._tcp</type>
        <port>445</port>
    </service>
</service-group>

Redémarrage du service

 service avahi-daemon restart

nginx

Installer nginx

 apk add nginx

Créez /etc/nginx/conf.d/default.conf

server {
    listen 80;

    server_name larkbox;
    client_max_body_size 128m;

    index index.html index.htm index.php;

    location / {
        proxy_pass http://localhost:8080/;
        access_log off;
    }

}

Démarrez nginx.

 /etc/init.d/nginx start

Paramètres de démarrage

 rc-update add nginx

Installation de l'application Web

Utilisez docker-compose pour insérer toutes les applications Web que vous souhaitez insérer.

Pour le moment, essayez d'installer Apache et l'outil de gestion de docker Portainer.

Apache+php+MySQL

J'ai configuré apache pour accéder au port 8080, mais je peux y accéder sur le port 80 via le proxy inverse nginx. Lorsque vous accédez à un serveur de votre réseau local domestique depuis votre iPhone, vous devez résoudre le nom avec un serveur proxy car vous ne pouvez pas définir le fichier d'hôtes sur votre iPhone. Par conséquent, apache a également une fonction de serveur proxy. Le numéro de port proxy était 8888.

docker-compose.yaml

version: '3'

services:
  php:
    image: php:7.2-apache
    volumes:
      - ./php.ini:/usr/local/etc/php/php.ini
      - ./html:/var/www/html
      - ./apache2/apache2.conf:/etc/apache2/apache2.conf
      - ./apache2/proxy-html.conf:/etc/apache2/proxy-html.conf
      - ./apache2/hosts:/etc/hosts
    ports:
      - 8080:80
      - 8888:8888
    restart: always
  mysql:
    image: mysql:5.7
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=test
      - MYSQL_USER=test
      - MYSQL_PASSWORD=test
    restart: always
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=mysql
      - PMA_USER=test
      - PMA_PASSWORD=test
    links:
      - mysql
    ports:
      - 4040:80
    volumes:
      - ./phpmyadmin/sessions:/sessions
    restart: always

./apache2/apache2.conf

LoadModule proxy_html_module /usr/lib/apache2/modules/mod_proxy_html.so
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_connect_module /usr/lib/apache2/modules/mod_proxy_connect.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
 
<IfModule proxy_html_module>
  Include /etc/apache2/proxy-html.conf
</IfModule>

./apache2/proxy-html.conf

<IfModule mod_proxy.c>
  ProxyRequests On
  ProxyVia On
  Listen 8888
  <Proxy *>
    Order deny,allow
    Deny from all
    Allow from all
  </Proxy>
</IfModule>

./apache2/hosts

127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.27.0.2      450ce809bc23
192.168.1.2     centos7
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.27.0.2      450ce809bc23
192.168.1.x     larkbox
 192.168.1.1 Nom du routeur domestique

Commencez

$ docker-compose up -d

avec ça, http://larkbox:8080/ Vous permet d'accéder à Apache avec le proxy inverse nginx http://larkbox/ Vous pourrez y accéder avec.

Portainer

docker-compose.yaml

version: '2'
services:
  portainer:
    image: portainer/portainer
    ports:
      - 9000:9000
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
	  - ./data:/data
    restart: always

Commencez

$ docker-compose up -d

avec ça, http://larkbox:9000/ Vous pourrez y accéder avec Si vous ajoutez le fichier de configuration nginx /etc/nginx/conf.d/default.conf comme suit,

/etc/nginx/conf.d/default.conf

server {
    ...
    location /portainer/ {
        proxy_pass http://localhost:9000;
        rewrite /portainer/(.*)$ /$1 break;
        access_log off;
    }

http://larkbox/portainer Vous pourrez y accéder avec.

Quelle est la performance essentielle en tant que serveur?

Avant l'introduction de Larkbox, CentOS 7 (mémoire 8 Go) sur Virtual Box sur Windows Pro sur Nuc (mémoire 32 Go) du Core i7-8559U était utilisé comme serveur, mais l'expérience n'a pas beaucoup changé. Impression qu'il peut être utilisé raisonnablement bien qu'il s'agisse d'un serveur sans LAN câblé.

Je l'ai aussi essayé avec une putain d'application lourde. J'ai installé Fess13 et essayé de l'explorer, mais simplement afficher la première page de Fess13 est merdique. Mais cela ne veut pas dire que cela ne fonctionne pas. J'ai pu ramper.

La dissipation de chaleur qui m'inquiétait semble être correcte.

Un bon serveur est prêt.

Recommended Posts

J'ai mis Alpine Linux dans Larkbox et en ai fait mon serveur domestique
Étant donné que la taille de la police et la taille de la fenêtre sont grandes dans Zoom pour Linux, je l'ai réduite
J'ai mis Linux (Ubuntu) dans VAIO SX14.
Mettez Docker dans Windows Home et exécutez un serveur Web simple avec Python
Mettez Linux dans Chromebook et utilisez R ...
J'ai fait un script pour mettre un extrait dans README.md
J'ai créé un serveur avec socket Python et ssl et j'ai essayé d'y accéder depuis le navigateur
Je souhaite copier un article en anglais à partir d'un pdf et le mettre dans Google Traduction
Je l'ai fait parce que je veux des données JSON qui peuvent être utilisées librement dans les démos et les prototypes
Lorsque j'ai mis Django dans mon répertoire personnel, je suis devenu accro à un fichier statique avec une erreur d'autorisation
J'ai fait ma propre langue. (1)
J'ai créé un serveur Xubuntu.
J'ai fait ma propre langue (2)
J'ai fait ma propre AML
Je veux créer un fichier pip et le refléter dans le menu fixe
J'ai créé Chatbot en utilisant l'API LINE Messaging et Python (2) ~ Server ~
J'ai créé un chat chat bot avec Tensor2Tensor et cette fois cela a fonctionné
J'ai créé un script POST pour créer un problème sur Github et l'enregistrer dans le projet