Saltar a contenido

2. Configuración de servidor

2.1. Python 3.12 + virtualenv

# Ubuntu 22.04 / 24.04
apt install -y software-properties-common
add-apt-repository -y ppa:deadsnakes/ppa
apt update
apt install -y python3.12 python3.12-venv python3.12-dev \
               build-essential libpq-dev \
               libcairo2 libpango-1.0-0 libpangoft2-1.0-0 \
               libxml2-dev libxslt1-dev \
               libssl-dev libffi-dev \
               libxmlsec1-dev pkg-config \
               tesseract-ocr tesseract-ocr-spa \
               poppler-utils

Por qué: libxmlsec1-dev es requisito de signxml para XAdES; Cairo/Pango para WeasyPrint; Tesseract para OCR de facturas de proveedor.

2.2. Crear entorno virtual

mkdir -p /opt/tienda
cd /opt/tienda

python3.12 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip wheel setuptools

2.3. PostgreSQL

apt install -y postgresql postgresql-contrib
systemctl enable --now postgresql

# Crear usuario y base
sudo -u postgres psql <<EOF
CREATE USER tienda WITH PASSWORD 'CAMBIA_ESTE_PASSWORD_FUERTE!';
CREATE DATABASE tienda_db OWNER tienda ENCODING 'UTF8' LC_COLLATE 'es_DO.UTF-8' LC_CTYPE 'es_DO.UTF-8' TEMPLATE template0;
ALTER USER tienda CREATEDB;
GRANT ALL PRIVILEGES ON DATABASE tienda_db TO tienda;
\q
EOF

# Verificar conexión local
PGPASSWORD=CAMBIA_ESTE_PASSWORD_FUERTE! psql -h 127.0.0.1 -U tienda -d tienda_db -c "SELECT version();"

Buena práctica: configurar /etc/postgresql/16/main/pg_hba.conf para que tienda use scram-sha-256 y restringir conexiones a 127.0.0.1. Activar archive_mode y pg_dumpall diario para backup.

2.4. Redis

apt install -y redis-server
systemctl enable --now redis-server

# Verificar
redis-cli ping   # debe responder PONG

Buena práctica: en /etc/redis/redis.conf setear bind 127.0.0.1, requirepass <password fuerte>, maxmemory 256mb, maxmemory-policy allkeys-lru.