Пн - Вс: 10:00 - 20.00
Компьютерный сервис IT-MEGAКомпьютерный сервис IT-MEGAКомпьютерный сервис IT-MEGA
(Понедельник - Пятница)
Санкт-Петербург
Компьютерный сервис IT-MEGAКомпьютерный сервис IT-MEGAКомпьютерный сервис IT-MEGA

Установка Docmost на Ubuntu 22.04

Ниже представлен код установочного файла.
Его можно назвать как у кодно
Как пример: install-docmost-complete.sh

В терменале водим строчку

nano install-docmost-complete.sh

И вставляем код который ниже, нажимаем Ctrl+x и потом Y, тем самым сохраняем файл

#!/bin/bash

# Complete Docmost Installation Script
# Fully working with self-registration for Ubuntu 22.04

set -e

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

# Logging functions
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}

log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}

log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}

# Check if running as root
if [ "$EUID" -ne 0 ]; then
log_error "Please run as root or with sudo"
exit 1
fi

# Configuration
INSTALL_DIR="/opt/docmost"
DOMAIN="${1:-localhost}"
EMAIL="${2:-admin@localhost}"

log_info "Starting Complete Docmost Installation..."
log_info "Domain: $DOMAIN"
log_info "Admin Email: $EMAIL"

# Update system
log_info "Updating system packages..."
apt update
apt upgrade -y

# Install dependencies
log_info "Installing dependencies..."
apt install -y \
curl \
wget \
gnupg \
ca-certificates \
apt-transport-https \
software-properties-common \
ufw

# Install Docker
log_info "Installing Docker..."
if ! command -v docker &> /dev/null; then
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
fi

# Install Docker Compose
log_info "Installing Docker Compose..."
if ! command -v docker-compose &> /dev/null; then
curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
fi

# Create directories
log_info "Creating directories..."
mkdir -p $INSTALL_DIR
cd $INSTALL_DIR

# Generate secure passwords
log_info "Generating secure passwords..."
POSTGRES_PASSWORD=$(openssl rand -hex 16)
APP_SECRET=$(openssl rand -hex 32)

# Create docker-compose.yml with ALL required variables
log_info "Creating Docker Compose configuration..."
cat > docker-compose.yml << EOF version: '3.8' services: postgres: image: postgres:15-alpine environment: POSTGRES_DB: docmost POSTGRES_USER: docmost POSTGRES_PASSWORD: $POSTGRES_PASSWORD volumes: - postgres_data:/var/lib/postgresql/data networks: - docmost-network restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U docmost"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine command: redis-server --appendonly yes volumes: - redis_data:/data networks: - docmost-network restart: unless-stopped healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 docmost: image: docmost/docmost:latest environment: # === REQUIRED VARIABLES === DATABASE_URL: postgresql://docmost:$POSTGRES_PASSWORD@postgres:5432/docmost REDIS_URL: redis://redis:6379 APP_SECRET: $APP_SECRET # === APP CONFIGURATION === APP_URL: http://$DOMAIN:3000 APP_PORT: 3000 NODE_ENV: production # === EMAIL CONFIGURATION === SMTP_HOST: smtp.gmail.com SMTP_PORT: 587 SMTP_USERNAME: your-email@gmail.com SMTP_PASSWORD: your-app-password SMTP_FROM_EMAIL: noreply@$DOMAIN SMTP_FROM_NAME: Docmost SMTP_SECURE: "false" # === USER REGISTRATION === ALLOW_SIGNUPS: "true" ALLOW_EMAIL_SIGNUPS: "true" REQUIRE_EMAIL_VERIFICATION: "false" ALLOW_GUEST_ACCESS: "true" GUEST_USER_LIMIT: "25" # === ADMIN CONFIGURATION === ADMIN_EMAIL: $EMAIL # === FILE STORAGE === FILE_STORAGE: local FILE_STORAGE_PATH: /app/data/uploads # === SECURITY === PASSWORD_MIN_LENGTH: "6" RATE_LIMITING_ENABLED: "true" COOKIE_SECURE: "false" # === FEATURES === ENABLE_DOCUMENT_HISTORY: "true" ENABLE_COLLABORATIVE_EDITING: "true" ENABLE_TEAM_SPACES: "true" ports: - "3000:3000" volumes: - docmost_uploads:/app/data/uploads depends_on: postgres: condition: service_healthy redis: condition: service_healthy networks: - docmost-network restart: unless-stopped healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/api/health || exit 1"] interval: 30s timeout: 10s retries: 3 start_period: 60s volumes: postgres_data: redis_data: docmost_uploads: networks: docmost-network: driver: bridge EOF # Create environment file for reference log_info "Creating environment reference file..." cat > .env << EOF # Docmost Configuration Reference # This file is for reference only, values are hardcoded in docker-compose.yml APP_URL=http://$DOMAIN:3000 ADMIN_EMAIL=$EMAIL POSTGRES_PASSWORD=$POSTGRES_PASSWORD APP_SECRET=$APP_SECRET # SMTP Configuration (Update these in docker-compose.yml) SMTP_HOST=smtp.gmail.com SMTP_PORT=587 SMTP_USERNAME=your-email@gmail.com SMTP_PASSWORD=your-app-password SMTP_FROM_EMAIL=noreply@$DOMAIN EOF # Set proper permissions chmod 600 .env chown -R $SUDO_USER:$SUDO_USER $INSTALL_DIR # Configure firewall log_info "Configuring firewall..." ufw allow 22/tcp ufw allow 3000/tcp ufw --force enable # Remove orphan containers if any log_info "Cleaning up previous installations..." docker-compose down --remove-orphans 2>/dev/null || true

# Start services
log_info "Starting Docmost services..."
docker-compose up -d

# Wait for services to initialize
log_info "Waiting for database and redis to be ready..."
for i in {1..30}; do
if docker-compose ps postgres | grep -q "healthy" && \
docker-compose ps redis | grep -q "healthy"; then
log_info "Database and Redis are ready"
break
fi
if [ $i -eq 15 ]; then
log_info "Still waiting for database services..."
docker-compose logs postgres --tail=3
fi
echo -n "."
sleep 5
done
echo ""

# Wait for Docmost to start
log_info "Waiting for Docmost to start (this can take 2-3 minutes)..."
SUCCESS=0
for i in {1..60}; do
# Check if container is running
if ! docker-compose ps docmost | grep -q "Up"; then
log_error "Docmost container has stopped!"
docker-compose logs docmost
exit 1
fi

# Check if application is responding
if curl -s http://localhost:3000 > /dev/null 2>&1; then
log_info "Docmost is ready and responding!"
SUCCESS=1
break
fi

# Show progress every 10 attempts
if [ $i -eq 10 ] || [ $i -eq 20 ] || [ $i -eq 30 ] || [ $i -eq 40 ] || [ $i -eq 50 ]; then
log_info "Still starting... ($i/60 attempts)"
docker-compose logs docmost --tail=2
fi

echo -n "."
sleep 5
done
echo ""

if [ $SUCCESS -eq 0 ]; then
log_warn "Docmost is taking longer than expected to start"
log_info "Checking detailed logs..."
docker-compose logs docmost --tail=30
fi

# Create systemd service for auto-start
log_info "Creating systemd service..."
cat > /etc/systemd/system/docmost.service << EOF [Unit] Description=Docmost Service Requires=docker.service After=docker.service [Service] Type=oneshot RemainAfterExit=yes WorkingDirectory=$INSTALL_DIR ExecStart=/usr/local/bin/docker-compose up -d ExecStop=/usr/local/bin/docker-compose down TimeoutStartSec=0 [Install] WantedBy=multi-user.target EOF systemctl enable docmost.service # Create management scripts log_info "Creating management scripts..." # Status script cat > status.sh << 'EOF' #!/bin/bash cd $(dirname "$0") echo "=== Docmost Service Status ===" docker-compose ps echo "" echo "=== Access Information ===" echo "Docmost: http://localhost:3000" echo "" echo "=== Recent Logs ===" docker-compose logs docmost --tail=10 EOF # Restart script cat > restart.sh << 'EOF' #!/bin/bash cd $(dirname "$0") echo "Restarting Docmost services..." docker-compose restart echo "Services restarted. Check status with: ./status.sh" EOF # Backup script cat > backup.sh << 'EOF' #!/bin/bash cd $(dirname "$0") BACKUP_DIR="./backups" TIMESTAMP=$(date +%Y%m%d_%H%M%S) mkdir -p $BACKUP_DIR echo "Starting backup..." docker-compose exec -T postgres pg_dump -U docmost docmost > $BACKUP_DIR/docmost_backup_$TIMESTAMP.sql
tar -czf $BACKUP_DIR/docmost_config_$TIMESTAMP.tar.gz .env docker-compose.yml
echo "Backup completed:"
echo "- Database: $BACKUP_DIR/docmost_backup_$TIMESTAMP.sql"
echo "- Config: $BACKUP_DIR/docmost_config_$TIMESTAMP.tar.gz"
EOF

# Update SMTP script
cat > update-smtp.sh << 'EOF'
#!/bin/bash
cd $(dirname "$0")

if [ $# -ne 4 ]; then
echo "Usage: $0 "
echo "Example: $0 smtp.gmail.com your-email@gmail.com your-password noreply@your-domain.com"
exit 1
fi

SMTP_HOST=$1
SMTP_USERNAME=$2
SMTP_PASSWORD=$3
SMTP_FROM_EMAIL=$4

echo "Updating SMTP configuration..."
docker-compose down

# Update docker-compose.yml with new SMTP settings
sed -i "s|SMTP_HOST:.*|SMTP_HOST: $SMTP_HOST|" docker-compose.yml
sed -i "s|SMTP_USERNAME:.*|SMTP_USERNAME: $SMTP_USERNAME|" docker-compose.yml
sed -i "s|SMTP_PASSWORD:.*|SMTP_PASSWORD: $SMTP_PASSWORD|" docker-compose.yml
sed -i "s|SMTP_FROM_EMAIL:.*|SMTP_FROM_EMAIL: $SMTP_FROM_EMAIL|" docker-compose.yml

docker-compose up -d
echo "SMTP configuration updated. Services restarted."
EOF

chmod +x status.sh restart.sh backup.sh update-smtp.sh

# Final status check
log_info "Performing final status check..."
sleep 10

log_info "=== INSTALLATION COMPLETE ==="
echo ""
echo "=== ACCESS INFORMATION ==="
echo " Docmost URL: http://$DOMAIN:3000"
echo " Admin Email: $EMAIL"
echo ""
echo "=== SELF-REGISTRATION ==="
echo " User Registration: ENABLED"
echo " Guest Access: ENABLED (25 users)"
echo " Registration URL: http://$DOMAIN:3000/register"
echo ""
echo "=== CREDENTIALS ==="
echo "Database Password: $POSTGRES_PASSWORD"
echo "App Secret: $APP_SECRET"
echo ""
echo "=== MANAGEMENT COMMANDS ==="
echo "Check status: cd $INSTALL_DIR && ./status.sh"
echo "Restart services: cd $INSTALL_DIR && ./restart.sh"
echo "Backup: cd $INSTALL_DIR && ./backup.sh"
echo "Update SMTP: cd $INSTALL_DIR && ./update-smtp.sh "
echo ""
echo "=== IMPORTANT NOTES ==="
echo "1. First registered user becomes administrator"
echo "2. Configure SMTP for email features:"
echo " cd $INSTALL_DIR && ./update-smtp.sh smtp.gmail.com your-email@gmail.com your-app-password noreply@$DOMAIN"
echo "3. Check logs: cd $INSTALL_DIR && docker-compose logs -f docmost"
echo "4. Default storage: Local file system"
echo ""
log_info "Docmost successfully installed with self-registration!"
log_info "Open http://$DOMAIN:3000 to access your Docmost instance"

Потом вставляем вот такую строчку:

chmod +x install-docmost-complete.sh

и нажимаем Enter

Вставляем следующую строчку, где укажите свой домен и свою почту

sudo ./install-docmost-complete.sh domen.com emal@email.com

и нажимаем Enter

Этот скрипт установит рабочую версию Docmost. Нам остаётся подождать окончание установки. И вы можете перейти на свой домен, указать все данные которые требует регистрационная форма и наслаждаться работай Docmost

Leave A Comment

Мы используем файлы cookie, чтобы обеспечить вам и другим пользователям наилучшие впечатления от посещения нашего веб-сайта.