Skip to content

[Admin]: Error: Upload failed; HTTP-Code 500; Failed to upload video file. Please try again. #971

@YoSiJo

Description

@YoSiJo

Description

Preface

I'm just trying to get loops on a Debian 13 LXC container to run and follow this: https://github.com/joinloops/loops-server/blob/main/INSTALLATION.md
It has also worked a lot and I get as far as the website is delivered as desired.
But if I try to upload a video, I get a 500 error.
Unfortunately, I cannot find any helpful error messages from the logs.

Steps to reproduce

Installation

apt update
dpkg-reconfigure locales

apt install \
  htop tmux vim bash-completion sudo curl lnav \
  nginx ssl-cert \
  php php-bcmath php-json php-mbstring php-tokenizer php-xml php-gd \
  php-imagick php-exif php-mysql php-redis php-memcached php-fpm composer \
  mariadb-server redis memcached \
  ffmpeg libavcodec-extra \
  nodejs npm supervisor


mysql --exec="CREATE DATABASE loops CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql --exec="CREATE USER 'loops_user'@'localhost' IDENTIFIED BY 'your_secure_password';"
mysql --exec="GRANT ALL PRIVILEGES ON loops.* TO 'loops_user'@'localhost';"
mysql --exec="FLUSH PRIVILEGES;"

cd /opt/
git clone https://github.com/joinloops/loops-server.git
chown -R www-data: ./loops-server
cd loops-server
sudo --user=www-data composer install --no-dev --optimize-autoloader
sudo --user=www-data npm install
sudo --user=www-data npm run build
sudo --user=www-data cp .env.example .env
sudo --user=www-data vim .env
sudo --user=www-data php artisan key:generate
sudo --user=www-data php artisan storage:link
sudo --user=www-data php artisan migrate
sudo --user=www-data php artisan create-admin-account
sudo --user=www-data php artisan passport:keys
sudo --user=www-data php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"

chmod -R 755 /opt/loops-server
chmod -R 775 /opt/loops-server/storage
chmod -R 775 /opt/loops-server/bootstrap/cache

vim /etc/crontab
vim /etc/php/8.4/fpm/php.ini
vim /etc/php/8.4/fpm/pool.d/www.conf

vim /etc/supervisor/conf.d/loops-horizon.conf
supervisorctl reread

vim /etc/nginx/sites-enabled/default
nginx -t && systemctl restart nginx.service php8.4-fpm.service

.env

APP_NAME=Loops
APP_ENV=production
APP_KEY=base64:…
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=https://loops.proxmox-02.anoxinon.de

APP_LOCALE=de
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=de_DE

APP_MAINTENANCE_DRIVER=file

PHP_CLI_SERVER_WORKERS=4

BCRYPT_ROUNDS=12

LOG_CHANNEL=daily
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=loops
DB_USERNAME=loops_user
DB_PASSWORD=…

SESSION_DRIVER=database
SESSION_LIFETIME=86400
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
SESSION_SECURE_COOKIE=true

BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=redis

CACHE_DRIVER=redis

CACHE_STORE=database
CACHE_PREFIX=
HORIZON_PREFIX=horizon_

MEMCACHED_HOST=127.0.0.1

REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=mail.anoxinon.de
MAIL_PORT=587
MAIL_USERNAME=…
MAIL_PASSWORD=…
MAIL_ENCRYPTION=tls
MAIL_AUTO_TLS=true  # STARTTLS (false to bypass)
MAIL_FROM_ADDRESS=""
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_ENDPOINT=
AWS_USE_PATH_STYLE_ENDPOINT=false
AWS_URL=

# Video Processing
FFMPEG_BINARIES=/bin/ffmpeg
FFPROBE_BINARIES=/bin/ffprobe

# Loops Settings
LOOPS_ADMIN_DASHBOARD_AUTOUPDATE=true
LOOPS_REG_MIN_YEARS_OLD=16

# API Rate Limits
LOOPS_API_RATE_LIMITS_ENABLED=true
LOOPS_API_RATE_LIMITS_GUEST_PER_MIN=60
LOOPS_API_RATE_LIMITS_GUEST_PER_HOUR=700
LOOPS_API_RATE_LIMITS_USER_PER_MIN=120
LOOPS_API_RATE_LIMITS_USER_PER_HOUR=3000

VITE_APP_NAME="${APP_NAME}"
VITE_APP_URL="${APP_URL}"

Versionen

  • PHP 8.4.21 (cli) (built: May 8 2026 05:56:48) (NTS)
  • nodejs: v20.19.2
  • npm: 9.2.0
  • Redis server v=8.0.2 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=b52b02bf0759f5b4
  • mariadb from 11.8.6-MariaDB, client 15.2 for debian-linux-gnu (x86_64) using EditLine wrapper
  • ffmpeg version 7.1.4-0+deb13u1 Copyright (c) 2000-2026 the FFmpeg developers
  • Composer version 2.8.8 2025-04-04 16:56:46
  • supervisord: 4.2.5
  • memcached 1.6.38
  • nginx version: nginx/1.26.3

nginx config

/etc/nginx/sites-enabled/default

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        # SSL configuration
        #
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        include snippets/snakeoil.conf;

    root /opt/loops-server/public;
    
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    
    index index.php;
    
    charset utf-8;
    
    # Handle large video uploads
    client_max_body_size 100M;
    client_body_buffer_size 128k;
    client_body_in_file_only clean;
    client_body_temp_path /var/lib/nginx/body;
 
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
    
    error_page 404 /index.php;
    
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_hide_header X-Powered-By;


        # Ergänzen Sie diese 4 Zeilen für große Uploads:
        fastcgi_read_timeout 600;
        fastcgi_connect_timeout 600;
        fastcgi_send_timeout 600;
        fastcgi_request_buffering off;

        # Ergänzen Sie diese Puffer-Werte:
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
    }
}

Analyse

tail --lines=0 --follow \
  /var/log/php8.4-fpm.log \
  /var/log/nginx/error.log \
  /var/log/nginx/access.log \
  /opt/loops-server/storage/logs/laravel-2026-05-22.log
==> /var/log/php8.4-fpm.log <==

==> /var/log/nginx/error.log <==

==> /var/log/nginx/access.log <==

==> /opt/loops-server/storage/logs/laravel-2026-05-22.log <==

==> /var/log/nginx/access.log <==
2a0a:…:2f41 - - [22/May/2026:20:42:25 +0000] "POST /api/v1/studio/upload HTTP/1.1" 500 111 "https://loops.proxmox-02.anoxinon.de/studio/upload" "Mozilla/5.0 (X11; Linux x86_64; rv:151.0) Gecko/20100101 Firefox/151.0"

Results

I also tried to find what with journald and php error logs, but unfortunately until now, no single error message found that will help me here.

Loops version

main

Acknowledgements

Yes

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions