File tree Expand file tree Collapse file tree 4 files changed +182
-0
lines changed
Expand file tree Collapse file tree 4 files changed +182
-0
lines changed Original file line number Diff line number Diff line change 1+ name : Build and Push Docker Image
2+
3+ on :
4+ push :
5+ branches :
6+ - main
7+ paths :
8+ - ' Dockerfile'
9+ - ' config.js'
10+ - ' .github/workflows/build-and-push.yaml'
11+ pull_request :
12+ branches :
13+ - main
14+ workflow_dispatch :
15+
16+ env :
17+ REGISTRY : ghcr.io
18+ IMAGE_NAME : ${{ github.repository }}
19+
20+ jobs :
21+ build-and-push :
22+ runs-on : ubuntu-latest
23+ permissions :
24+ contents : read
25+ packages : write
26+
27+ steps :
28+ - name : Checkout repository
29+ uses : actions/checkout@v4
30+
31+ - name : Set up Docker Buildx
32+ uses : docker/setup-buildx-action@v3
33+
34+ - name : Log in to Container Registry
35+ if : github.event_name != 'pull_request'
36+ uses : docker/login-action@v3
37+ with :
38+ registry : ${{ env.REGISTRY }}
39+ username : ${{ github.actor }}
40+ password : ${{ secrets.GITHUB_TOKEN }}
41+
42+ - name : Extract metadata for Docker
43+ id : meta
44+ uses : docker/metadata-action@v5
45+ with :
46+ images : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
47+ tags : |
48+ type=ref,event=branch
49+ type=ref,event=pr
50+ type=sha,prefix=
51+ type=raw,value=latest,enable={{is_default_branch}}
52+
53+ - name : Build and push Docker image
54+ uses : docker/build-push-action@v5
55+ with :
56+ context : .
57+ push : ${{ github.event_name != 'pull_request' }}
58+ tags : ${{ steps.meta.outputs.tags }}
59+ labels : ${{ steps.meta.outputs.labels }}
60+ cache-from : type=gha
61+ cache-to : type=gha,mode=max
62+
Original file line number Diff line number Diff line change 1+ FROM thelounge/thelounge:4.4.3
2+
3+ # The Lounge stores config in /var/opt/thelounge
4+ # We'll use a volume for persistence
5+
6+ # Copy custom config if needed
7+ COPY config.js /var/opt/thelounge/config.js
8+
9+ # Expose The Lounge web interface
10+ EXPOSE 9000
11+
12+ # Health check
13+ HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \
14+ CMD wget --no-verbose --tries=1 --spider http://localhost:9000/ || exit 1
15+
Original file line number Diff line number Diff line change 1+ # IRC - The Lounge
2+
3+ Self-hosted IRC client using [ The Lounge] ( https://thelounge.chat/ ) .
4+
5+ ## Features
6+
7+ - Modern web-based IRC client
8+ - Always connected (no need for a separate bouncer)
9+ - Push notifications
10+ - Link previews
11+ - File uploads
12+ - Multi-user support
13+
14+ ## Configuration
15+
16+ Pre-configured networks:
17+ - ** Libera.Chat** (formerly Freenode) - ` irc.libera.chat:6697 ` (TLS)
18+ - ** Undernet** - ` us.undernet.org:6667 `
19+
20+ ## Docker
21+
22+ ``` bash
23+ # Build locally
24+ docker build -t ghcr.io/bryanlabs/irc:latest .
25+
26+ # Run locally
27+ docker run -d \
28+ --name irc \
29+ -p 9000:9000 \
30+ -v irc-data:/var/opt/thelounge \
31+ ghcr.io/bryanlabs/irc:latest
32+ ```
33+
34+ ## User Management
35+
36+ The Lounge runs in private mode. Create users via:
37+
38+ ``` bash
39+ docker exec -it irc thelounge add < username>
40+ ```
41+
42+ ## Slack Notifications
43+
44+ To receive Slack notifications when someone mentions your nick, configure the push notification settings in The Lounge's web UI, or use a ZNC-style push module if needed.
45+
Original file line number Diff line number Diff line change 1+ "use strict" ;
2+
3+ module . exports = {
4+ // Public mode allows anyone to connect without authentication
5+ // Set to false for private mode (users must be created via thelounge add)
6+ public : false ,
7+
8+ // The IP address or hostname to bind to
9+ host : "0.0.0.0" ,
10+
11+ // The port to listen on
12+ port : 9000 ,
13+
14+ // Set to true to enable HTTPS
15+ https : {
16+ enable : false ,
17+ } ,
18+
19+ // Reverse proxy settings
20+ reverseProxy : true ,
21+
22+ // Maximum number of history lines per channel
23+ maxHistory : 10000 ,
24+
25+ // Default theme
26+ theme : "morning" ,
27+
28+ // Prefetch URLs for link previews
29+ prefetch : true ,
30+ prefetchStorage : true ,
31+ prefetchMaxImageSize : 2048 ,
32+
33+ // File uploads
34+ fileUpload : {
35+ enable : true ,
36+ maxFileSize : 10240 , // KB
37+ baseUrl : null ,
38+ } ,
39+
40+ // LDAP authentication (disabled)
41+ ldap : {
42+ enable : false ,
43+ } ,
44+
45+ // Default settings for new users
46+ defaults : {
47+ name : "Freenode" ,
48+ host : "irc.libera.chat" , // Freenode moved to Libera.Chat
49+ port : 6697 ,
50+ password : "" ,
51+ tls : true ,
52+ rejectUnauthorized : true ,
53+ nick : "socket" ,
54+ username : "socket" ,
55+ realname : "The Lounge User" ,
56+ join : "#test" ,
57+ leaveMessage : "The Lounge - https://thelounge.chat" ,
58+ } ,
59+ } ;
60+
You can’t perform that action at this time.
0 commit comments