Faster Previews (Imaginary)
Tested with debian 12
# Imaginary
apt update -y
apt install libvips libvips-dev libopenslide-dev golang pkg-config original-awk grep bc -y
go install github.com/h2non/imaginary@latest
mv go/bin/imaginary /usr/local/bin/imaginary
chmod +x /usr/local/bin/imaginary
rm -rf go/
cat << EOF > /etc/systemd/system/imaginary.service
[Unit]
Description=Imaginary Service
After=network.target
[Service]
Type=simple
Environment="MALLOC_ARENA_MAX=2"
ExecStart=/usr/local/bin/imaginary -p 9001 -concurrency 20
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now imaginary
# use Imaginary for Preview Generation
and use RAM as cache for previewsNC_DATA="replace-me-nextcloud-data-directory"
OCC="sudo -u www-data php /var/www/nextcloud/occ"
$OCC config:system:set enable_previews --value=true
$OCC config:system:set enabledPreviewProviders 0 --value="OC\\Preview\\Imaginary"
$OCC config:system:set preview_imaginary_url --value="http://127.0.0.1:9001"
total_mem_kb=systemctl stop nginx php8.2-fpm redis-server postgresql imaginary
# use RAM instead of storage for previews
HALF_MEMORY_GB=$(echo "$(grep MemTotal /proc/meminfo | awk '{print int($2}')
total_mem_gb=$(echo "scale=2; $total_mem_kb2 / 1024 / 1024"1024 / 2)}')")
INSTANCE_ID=$(grep "'instanceid'" /var/www/nextcloud/config/config.php | bc)awk half_mem_gb=-F "=> '" '{print $2}' | sed "s/',//")
NC_DATA=$(grep "'datadirectory'" /var/www/nextcloud/config/config.php | awk -F "=> '" '{print $2}' | sed "s/',//")
PREVIEW_DIR="$NC_DATA/appdata_$INSTANCE_ID/preview"
echo "scale=2;previewcache $total_mem_gbPREVIEW_DIR tmpfs x-mount.mkdir,size=${HALF_MEMORY_GB}G 0 0" >> /etc/fstab
2"systemctl |daemon-reload
bc)mount -a
systemctl start nginx php8.2-fpm redis-server postgresql imaginary