Add README
This commit is contained in:
parent
ed8fd6415c
commit
083f207f7c
129
README.md
Normal file
129
README.md
Normal file
|
@ -0,0 +1,129 @@
|
|||
## Telegabber: like Zhabogram, but in Go! ##
|
||||
|
||||
Now it's native, more asynchronous, and does not require to mess your server up with a monstrous third-party interpreter.
|
||||
|
||||
The configuration file is compatible with Zhabogram 2.0, so you can easily copy your existing `config.yml`.
|
||||
|
||||
### Build ###
|
||||
|
||||
Prerequisites: Go links the binary against the `glibc` version present in the system where the build process happens, so it should be less or equal to the version of `glibc` in the system where Telegabber will run.
|
||||
|
||||
* Build TDLib according to [TDLib build instructions](https://tdlib.github.io/td/build.html).
|
||||
* Install Go (tested with 1.13, but may work with earlier versions too).
|
||||
* Open the source dir in a new shell (to make sure that `$GOPATH` works) and run `make`. Dependencies will be installed automatically.
|
||||
|
||||
After a successful build, you get a single binary to deploy on your server.
|
||||
|
||||
### Installation ###
|
||||
|
||||
First of all, you need to create component listener on your Jabber server.
|
||||
For example, for ejabberd in **/etc/ejabberd/ejabberd.yml**:
|
||||
|
||||
```
|
||||
listen:
|
||||
-
|
||||
port: 8888
|
||||
module: ejabberd_service
|
||||
access: all
|
||||
shaper_rule: fast
|
||||
ip: "127.0.0.1"
|
||||
service_check_from: false
|
||||
hosts:
|
||||
"tlgrm.localhost":
|
||||
password: "secret"
|
||||
```
|
||||
|
||||
|
||||
Next, rename **config.yml.example** to **config.yml** and edit **xmpp** section to match your component listener:
|
||||
|
||||
|
||||
```
|
||||
:xmpp:
|
||||
db 'users.db'
|
||||
jid: 'tlgrm.localhost'
|
||||
host: 'localhost'
|
||||
port: 8888
|
||||
secret: 'secret'
|
||||
loglevel: :warn
|
||||
```
|
||||
|
||||
### Configuration ###
|
||||
|
||||
It is good idea to obtain Telegram API ID from [**https://my.telegram.org**](https://my.telegram.org) to remove demo key requests limit, and then edit in **config.yml**:
|
||||
|
||||
```
|
||||
:telegram:
|
||||
:tdlib:
|
||||
:lib_path: 'lib/'
|
||||
:client:
|
||||
:api_id: '845316' # telegram API ID (my.telegram.org) #
|
||||
:api_hash: '27fe5224bc822bf3a45e015b4f9dfdb7' # telegram API HASH (my.telegram.org) #
|
||||
...
|
||||
```
|
||||
|
||||
### How to receive files from Telegram ###
|
||||
|
||||
First of all, you need to set up web server that will serve some directory in your filesystem.
|
||||
Example nginx config:
|
||||
|
||||
```
|
||||
server {
|
||||
listen 80;
|
||||
server_name tlgrm.localhost;
|
||||
location /content {
|
||||
alias /var/zhabogram;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You need to set `:content: → :path: and :link:` **config.yml**.
|
||||
|
||||
Set `:path:` according to location (for our example it will be `/var/zhabogram/content`).
|
||||
Set `:link:` according to server_name (for our example it will be `http://tlgrm.localhost`)
|
||||
|
||||
|
||||
### How to send files to Telegram chats ###
|
||||
|
||||
You need to setup `mod_http_upload` for your XMPP server.
|
||||
For example, for ejabberd in **/etc/ejabberd/ejabberd.yml**
|
||||
|
||||
```
|
||||
modules:
|
||||
mod_http_upload:
|
||||
docroot: "/var/ejabberd/upload" # this must be a valid path, user ownership and SELinux flags must be set accordingly
|
||||
put_url: "https://xmpp.localhost:5443/upload/@HOST@"
|
||||
get_url: "https://xmppfiles.localhost/upload/@HOST@"
|
||||
access: local
|
||||
max_size: 500000000 #500 MByte
|
||||
thumbnail: false
|
||||
file_mode: "0644"
|
||||
dir_mode: "0744"
|
||||
```
|
||||
|
||||
Then you need to setup nginx proxy that will serve `get_url` path, because Telegram will not handle URLs with non-default http(s) ports.
|
||||
Example nginx config:
|
||||
|
||||
/```
|
||||
server {
|
||||
listen 80;
|
||||
listen 443 ssl;
|
||||
|
||||
server_name xmppfiles.localhost;
|
||||
|
||||
# SSL settigns #
|
||||
keepalive_timeout 60;
|
||||
ssl_certificate /etc/ssl/domain.crt;
|
||||
ssl_certificate_key /etc/ssl/domain.key;
|
||||
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
|
||||
ssl_ciphers "RC4:HIGH:!aNULL:!MD5:!kEDH";
|
||||
add_header Strict-Transport-Security 'max-age=604800';
|
||||
|
||||
location / {
|
||||
proxy_pass https://xmpp.localhost:5443;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Finally, update `:upload:` in your config.yml to match `server_name` in nginx config.
|
Loading…
Reference in a new issue