Contains the Concourse pipeline definition for building a line-server container
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

144 lines
6.2 KiB

9 years ago
9 years ago
9 years ago
9 years ago
8 years ago
9 years ago
  1. linx-server
  2. ======
  3. [![Build Status](https://travis-ci.org/andreimarcu/linx-server.svg?branch=master)](https://travis-ci.org/andreimarcu/linx-server)
  4. Self-hosted file/media sharing website.
  5. ### Features
  6. - Display common filetypes (image, video, audio, markdown, pdf)
  7. - Display syntax-highlighted code with in-place editing
  8. - Documented API with keys if need to restrict uploads (can use [linx-client](https://github.com/andreimarcu/linx-client) for uploading through command-line)
  9. - Torrent download of files using web seeding
  10. - File expiry, deletion key, and random filename options
  11. ### Screenshots
  12. <img width="230" src="https://cloud.githubusercontent.com/assets/4650950/10530123/4211e946-7372-11e5-9cb5-9956c5c49d95.png" /> <img width="230" src="https://cloud.githubusercontent.com/assets/4650950/10530124/4217db8a-7372-11e5-957d-b3abb873dc80.png" />
  13. <img width="230" src="https://cloud.githubusercontent.com/assets/4650950/10530844/48d6d4e2-7379-11e5-8886-d4c32c416cbc.png" /> <img width="230" src="https://cloud.githubusercontent.com/assets/4650950/10530845/48dc9ae4-7379-11e5-9e59-959f7c40a573.png" /> <img width="230" src="https://cloud.githubusercontent.com/assets/4650950/10530846/48df08ec-7379-11e5-89f6-5c3f6372384d.png" />
  14. Get release and run
  15. -------------------
  16. 1. Grab the latest binary from the [releases](https://github.com/andreimarcu/linx-server/releases)
  17. 2. Run ```./linx-server```
  18. Usage
  19. -----
  20. #### Configuration
  21. All configuration options are accepted either as arguments or can be placed in an ini-style file as such:
  22. ```ini
  23. maxsize = 4294967296
  24. allowhotlink = true
  25. # etc
  26. ```
  27. ...and then invoke ```linx-server -config path/to/config.ini```
  28. #### Options
  29. - ```-bind 127.0.0.1:8080``` -- what to bind to (default is 127.0.0.1:8080)
  30. - ```-sitename myLinx``` -- the site name displayed on top (default is inferred from Host header)
  31. - ```-siteurl "http://mylinx.example.org/"``` -- the site url (default is inferred from execution context)
  32. - ```-filespath files/``` -- Path to store uploads (default is files/)
  33. - ```-metapath meta/``` -- Path to store information about uploads (default is meta/)
  34. - ```-maxsize 4294967296``` -- maximum upload file size in bytes (default 4GB)
  35. - ```-maxexpiry 86400``` -- maximum expiration time in seconds (default is 0, which is no expiry)
  36. - ```-allowhotlink``` -- Allow file hotlinking
  37. - ```-contentsecuritypolicy "..."``` -- Content-Security-Policy header for pages (default is "default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; referrer origin;")
  38. - ```-filecontentsecuritypolicy "..."``` -- Content-Security-Policy header for files (default is "default-src 'none'; img-src 'self'; object-src 'self'; media-src 'self'; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; referrer origin;")
  39. - ```-xframeoptions "..." ``` -- X-Frame-Options header (default is "SAMEORIGIN")
  40. - ```-remoteuploads``` -- (optionally) enable remote uploads (/upload?url=https://...)
  41. - ```-nologs``` -- (optionally) disable request logs in stdout
  42. - ```-googleapikey``` -- (optionally) API Key for Google's URL Shortener. ([How to create one](https://developers.google.com/url-shortener/v1/getting_started#APIKey))
  43. #### SSL with built-in server
  44. - ```-certfile path/to/your.crt``` -- Path to the ssl certificate (required if you want to use the https server)
  45. - ```-keyfile path/to/your.key``` -- Path to the ssl key (required if you want to use the https server)
  46. #### Use with http proxy
  47. - ```-realip``` -- let linx-server know you (nginx, etc) are providing the X-Real-IP and/or X-Forwarded-For headers.
  48. #### Use with fastcgi
  49. - ```-fastcgi``` -- serve through fastcgi
  50. #### Require API Keys for uploads
  51. - ```-authfile path/to/authfile``` -- (optionally) require authorization for upload/delete by providing a newline-separated file of scrypted auth keys
  52. - ```-remoteauthfile path/to/remoteauthfile``` -- (optionally) require authorization for remote uploads by providing a newline-separated file of scrypted auth keys
  53. A helper utility ```linx-genkey``` is provided which hashes keys to the format required in the auth files.
  54. Deployment
  55. ----------
  56. Linx-server supports being deployed in a subdirectory (ie. example.com/mylinx/) as well as on its own (example.com/).
  57. #### 1. Using fastcgi
  58. A suggested deployment is running nginx in front of linx-server serving through fastcgi.
  59. This allows you to have nginx handle the TLS termination for example.
  60. An example configuration:
  61. ```
  62. server {
  63. ...
  64. server_name yourlinx.example.org;
  65. ...
  66. client_max_body_size 4096M;
  67. location / {
  68. fastcgi_pass 127.0.0.1:8080;
  69. include fastcgi_params;
  70. }
  71. }
  72. ```
  73. And run linx-server with the ```-fastcgi``` option.
  74. #### 2. Using the built-in https server
  75. Run linx-server with the ```-certfile path/to/cert.file``` and ```-keyfile path/to/key.file``` options.
  76. #### 3. Using the built-in http server
  77. Run linx-server normally.
  78. #### 4. Using Docker with the built-in http server
  79. First, build the image:
  80. ```docker build -t linx-server .```
  81. You'll need some directories for the persistent storage. For the purposes of this example, we will use `/media/meta` and `/media/files`.
  82. Then, run it:
  83. ```docker run -p 8080:8080 -v /media/meta:/data/meta -v /media/files:/data/files linx-server```
  84. Development
  85. -----------
  86. Any help is welcome, PRs will be reviewed and merged accordingly.
  87. The official IRC channel is #linx on irc.oftc.net
  88. 1. ```go get -u github.com/andreimarcu/linx-server ```
  89. 2. ```cd $GOPATH/src/github.com/andreimarcu/linx-server ```
  90. 3. ```go build && ./linx-server```
  91. License
  92. -------
  93. Copyright (C) 2015 Andrei Marcu
  94. This program is free software: you can redistribute it and/or modify
  95. it under the terms of the GNU General Public License as published by
  96. the Free Software Foundation, either version 3 of the License, or
  97. (at your option) any later version.
  98. This program is distributed in the hope that it will be useful,
  99. but WITHOUT ANY WARRANTY; without even the implied warranty of
  100. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  101. GNU General Public License for more details.
  102. You should have received a copy of the GNU General Public License
  103. along with this program. If not, see <http://www.gnu.org/licenses/>.
  104. Author
  105. -------
  106. Andrei Marcu, http://andreim.net/