Skip to content

Commit 479ed41

Browse files
committed
[v2]: init
1 parent a4b8980 commit 479ed41

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+3779
-1194
lines changed

.gitignore

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1-
vendor/
1+
**/vendor/*
2+
vendor
3+
.env
24
composer.lock
3-
.env
5+
**/node_modules/*
6+
app/public/storage/thumbnails/**

Dockerfile

Lines changed: 40 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,54 @@
1-
FROM php:8.0-fpm
1+
FROM php:8.3-fpm AS base
2+
3+
RUN apt-get update && apt-get install -y \
4+
nginx \
5+
nano \
6+
procps \
7+
psmisc \
8+
git \
9+
htop \
10+
nano \
11+
cron \
12+
openssl \
13+
libonig-dev \
14+
libxml2-dev \
15+
libssl-dev \
16+
libpng-dev \
17+
libjpeg-dev \
18+
libfreetype6-dev \
19+
libgmp-dev \
20+
libzip-dev \
21+
&& docker-php-ext-configure gd --with-jpeg --with-freetype \
22+
&& docker-php-ext-install pdo_mysql sockets gd zip gmp bcmath \
23+
&& apt-get clean && rm -rf /var/lib/apt/lists/*
24+
25+
FROM base AS builder
226

3-
RUN apt-get update && apt-get install -y nginx cron nano procps unzip \
4-
&& docker-php-ext-install pdo_mysql
5-
627
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
728

8-
# Configura o PHP-FPM para enviar logs para o coletor de logs do Docker
9-
RUN ln -sf /dev/stdout /var/log/php-fpm.access.log \
10-
&& ln -sf /dev/stderr /var/log/php-fpm.error.log
11-
12-
# Configura o log de erros do PHP
13-
RUN echo "error_log = /dev/stderr" >> /usr/local/etc/php/php.ini
14-
15-
COPY default.conf /etc/nginx/sites-available/default
16-
17-
RUN mkdir -p /app
1829
COPY app/ /app/
1930

2031
WORKDIR /app
32+
33+
RUN composer config platform.php-64bit 8.3
2134
RUN composer install --no-interaction --optimize-autoloader
2235

23-
# Copia e configura permissões do script de inicialização
24-
COPY docker-entrypoint.sh /usr/local/bin/
25-
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
36+
FROM base
37+
38+
COPY --from=builder /usr/local/bin/composer /usr/local/bin/composer
39+
COPY --from=builder /app /app
2640

27-
RUN mkdir -p /app/logs
41+
COPY default.conf /etc/nginx/sites-available/default
42+
COPY setup/ /setup/
2843

29-
# Configura o cron para usar o logger para coleta de logs do Docker
30-
RUN touch /app/logs/cron.log && ln -sf /dev/stdout /app/logs/cron.log
31-
RUN echo '0 * * * * root php "/app/cron/fetchFeeds.php" 2>&1 | logger -t cron-fetchfeeds' >> /etc/crontab
44+
COPY docker-entrypoint.sh /usr/local/bin/
45+
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
3246

33-
RUN chown -R www-data:www-data /app && chmod -R 755 /app
47+
RUN chown -R www-data:www-data /app \
48+
&& chmod -R 755 /app
3449

35-
# Garante que os logs do nginx sejam direcionados para o coletor de logs do Docker
36-
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
37-
&& ln -sf /dev/stderr /var/log/nginx/error.log
50+
ENV TZ=UTC
3851

39-
EXPOSE 80
52+
EXPOSE 8077
4053

41-
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
54+
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]

README.md

Lines changed: 5 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,15 @@
22

33
[![pt-br](https://img.shields.io/badge/lang-pt--br-green.svg)](https://github.com/manualdousuario/lerama/blob/master/README.md)
44

5-
O Lerama é um agregador de feeds ATOM e RSS2.0 feito como alternativa ao [OpenOrb](https://git.sr.ht/~lown/openorb) para o [PC do Manual](https://pcdomanual.com/).
5+
O Lerama é um agregador de feeds ATOM, RSS1.0/2.0, JSON, CSV, XML feito como alternativa ao [OpenOrb](https://git.sr.ht/~lown/openorb) para o [PC do Manual](https://pcdomanual.com/).
66

77
## ✨ Recursos
88

9-
- Agregação automática de feeds ATOM e RSS2.0
10-
- Coleta automática de dados a cada hora
9+
- Agregação automática de feeds ATOM, RSS1.0/2.0, JSON, CSV, XML
1110
- Sistema de detecção e gestão de erros
12-
- Busca em texto completo dos artigos
11+
- Busca dos artigos e filtros
1312
- Interface limpa e otimizada
1413
- Suporte a múltiplos sites
15-
- Sistema de cache eficiente
16-
- Banco de dados MariaDB para armazenamento robusto
1714

1815
## 🐳 Docker
1916

@@ -34,97 +31,12 @@ curl -o ./docker-compose.yml https://raw.githubusercontent.com/manualdousuario/l
3431
nano docker-compose.yml
3532
```
3633

37-
```yaml
38-
services:
39-
lerama:
40-
container_name: lerama
41-
image: ghcr.io/manualdousuario/lerama:latest
42-
ports:
43-
- "80:80"
44-
environment:
45-
DB_HOST: mariadb
46-
DB_USERNAME: USUARIO
47-
DB_PASSWORD: SENHA
48-
DB_NAME: BANCO_DE_DADOS
49-
SITE_URL: https://lerama.xyz
50-
SITE_NAME: Lerama
51-
ADMIN_PASSWORD: p@ssw0rd
52-
depends_on:
53-
- db
54-
db:
55-
image: mariadb:10.11
56-
container_name: db
57-
environment:
58-
MYSQL_ROOT_PASSWORD: SENHA_ROOT
59-
MYSQL_DATABASE: BANCO_DE_DADOS
60-
MYSQL_USER: USUARIO
61-
MYSQL_PASSWORD: SENHA
62-
ports:
63-
- 3306:3306
64-
volumes:
65-
- ./mariadb/data:/var/lib/mysql
66-
```
67-
68-
### Configuração do Banco de Dados
69-
70-
1. Inicie os containers:
71-
```bash
72-
docker compose up -d
73-
```
74-
75-
2. Acesse o MySQL e crie as tabelas:
76-
```bash
77-
docker exec -it db mysql -u USUARIO -pSENHA BANCO_DE_DADOS
78-
```
79-
80-
```sql
81-
CREATE TABLE IF NOT EXISTS sites (
82-
id INT AUTO_INCREMENT PRIMARY KEY,
83-
name VARCHAR(255) NOT NULL,
84-
url VARCHAR(255) NOT NULL,
85-
feed_url VARCHAR(255) NOT NULL,
86-
status ENUM('active', 'inactive') DEFAULT 'active',
87-
error_count INT DEFAULT 0,
88-
last_error_check TIMESTAMP NULL DEFAULT NULL
89-
);
90-
91-
CREATE TABLE IF NOT EXISTS articles (
92-
id INT AUTO_INCREMENT PRIMARY KEY,
93-
site_id INT NOT NULL,
94-
title VARCHAR(255) NOT NULL,
95-
author VARCHAR(255),
96-
publication_date DATETIME NOT NULL,
97-
link VARCHAR(255) NOT NULL,
98-
unique_identifier VARCHAR(255) NOT NULL,
99-
FOREIGN KEY (site_id) REFERENCES sites(id)
100-
);
101-
102-
CREATE FULLTEXT INDEX idx_title_fulltext ON articles (title);
103-
```
104-
105-
Verifique se as tabelas foram criadas: `SHOW TABLES;`
106-
107-
## ⚙️ Recomendações
108-
109-
- Utilize o [NGINX Proxy Manager](https://nginxproxymanager.com/) como webservice para maior proteção e camadas de cache
110-
- Configure corretamente todas as variáveis de ambiente antes de iniciar
111-
- Mantenha backups regulares do banco de dados
112-
113-
## 🛠️ Manutenção
114-
115-
### Logs
116-
117-
Para acompanhar a execução:
118-
```bash
119-
tail -f /var/log/lorema.log
120-
```
121-
122-
### Coleta de Dados
34+
### Coleta de dados
12335

12436
A coleta de feeds é executada automaticamente a cada hora. Você pode monitorar o processo através dos logs.
12537

12638
---
12739

12840
Feito com ❤️! Se tiver dúvidas, sugestões ou encontrar problemas, abra uma issue que a gente ajuda! 😉
12941

130-
Instância pública disponível em [lerama.pcdomanual.com](https://lerama.pcdomanual.com/)
42+
Instância pública disponível em [lerama.pcdomanual.com](https://lerama.pcdomanual.com/)

app/.env.example

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
APP_NAME=Lerama
2+
APP_URL=https://lerama.lab
3+
4+
DB_HOST=localhost
5+
DB_NAME=lerama
6+
DB_USER=root
7+
DB_PASS=root
8+
DB_PORT=3306
9+
10+
ADMIN_USERNAME=admin
11+
ADMIN_PASSWORD=admin

app/.env.sample

Lines changed: 0 additions & 10 deletions
This file was deleted.

0 commit comments

Comments
 (0)