eikarna
commited on
Commit
·
6c06868
1
Parent(s):
df6eb01
fix(permission): change default squid dir to tmp dir
Browse files- Dockerfile +18 -38
- README.md +0 -1
Dockerfile
CHANGED
@@ -4,74 +4,52 @@ FROM ubuntu:24.04
|
|
4 |
# Set environment variables to avoid interactive prompts during installation
|
5 |
ENV DEBIAN_FRONTEND=noninteractive
|
6 |
|
7 |
-
# Install Squid
|
8 |
RUN apt-get update && \
|
9 |
-
apt-get install -y squid && \
|
10 |
apt-get clean && \
|
11 |
rm -rf /var/lib/apt/lists/*
|
12 |
|
13 |
-
# Create directories for logs and cache
|
14 |
-
RUN mkdir -p /var/log/squid && \
|
15 |
-
mkdir -p /var/spool/squid && \
|
16 |
-
chown -R proxy:proxy /var/log/squid && \
|
17 |
-
chown -R proxy:proxy /var/spool/squid
|
18 |
-
|
19 |
# Create squid configuration with high anonymity features
|
20 |
-
|
21 |
-
\n\
|
22 |
-
# Port settings\n\
|
23 |
http_port 7860\n\
|
24 |
-
\n\
|
25 |
-
# Cache settings\n\
|
26 |
-
cache_dir ufs /var/spool/squid 100 16 256\n\
|
27 |
cache_mem 128 MB\n\
|
28 |
maximum_object_size 4096 KB\n\
|
29 |
cache_swap_high 95\n\
|
30 |
cache_swap_low 90\n\
|
31 |
-
\n\
|
32 |
-
# Anonymize headers\n\
|
33 |
forwarded_for delete\n\
|
34 |
via off\n\
|
35 |
-
\n\
|
36 |
-
|
|
|
|
|
37 |
acl SSL_ports port 443\n\
|
38 |
acl Safe_ports port 80\n\
|
39 |
acl Safe_ports port 443\n\
|
40 |
acl CONNECT method CONNECT\n\
|
41 |
-
\n\
|
42 |
-
# Allow connections to safe ports\n\
|
43 |
http_access allow all\n\
|
44 |
-
\n\
|
45 |
-
# Deny requests to certain unsafe ports\n\
|
46 |
http_access deny !Safe_ports\n\
|
47 |
-
\n\
|
48 |
-
# Deny CONNECT to non-SSL ports\n\
|
49 |
http_access deny CONNECT !SSL_ports\n\
|
50 |
-
\n\
|
51 |
-
# Final deny rule\n\
|
52 |
http_access deny all\n\
|
53 |
-
\n\
|
54 |
-
|
55 |
-
|
56 |
-
cache_log /var/log/squid/cache.log\n\
|
57 |
-
cache_store_log /var/log/squid/store.log\n\
|
58 |
-
\n\
|
59 |
-
# Refresh patterns\n\
|
60 |
refresh_pattern ^ftp: 1440 20% 10080\n\
|
61 |
refresh_pattern ^gopher: 1440 0% 1440\n\
|
62 |
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0\n\
|
63 |
refresh_pattern . 0 20% 4320\n\
|
64 |
-
\n\
|
65 |
-
# Performance settings\n\
|
66 |
-
pipeline_prefetch on\n\
|
67 |
half_closed_clients off' > /etc/squid/squid.conf
|
68 |
|
69 |
# Set proper permissions for configuration
|
70 |
RUN chown root:proxy /etc/squid/squid.conf && \
|
71 |
chmod 644 /etc/squid/squid.conf
|
72 |
|
73 |
-
#
|
74 |
-
|
|
|
75 |
|
76 |
# Expose HTTP port
|
77 |
EXPOSE 7860
|
@@ -80,5 +58,7 @@ EXPOSE 7860
|
|
80 |
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
81 |
CMD squid -k check
|
82 |
|
|
|
|
|
83 |
# Start Squid proxy server
|
84 |
CMD ["squid", "-NYC"]
|
|
|
4 |
# Set environment variables to avoid interactive prompts during installation
|
5 |
ENV DEBIAN_FRONTEND=noninteractive
|
6 |
|
7 |
+
# Install Squid and sudo (needed to run command as proxy user during build)
|
8 |
RUN apt-get update && \
|
9 |
+
apt-get install -y squid sudo && \
|
10 |
apt-get clean && \
|
11 |
rm -rf /var/lib/apt/lists/*
|
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
# Create squid configuration with high anonymity features
|
14 |
+
# Note: cache_dir is set to /tmp to avoid permission issues with root /tmp
|
15 |
+
RUN echo 'cache_dir ufs /tmp 100 16 256\n\
|
|
|
16 |
http_port 7860\n\
|
17 |
+
pid_filename /tmp/squid.pid\n\
|
|
|
|
|
18 |
cache_mem 128 MB\n\
|
19 |
maximum_object_size 4096 KB\n\
|
20 |
cache_swap_high 95\n\
|
21 |
cache_swap_low 90\n\
|
|
|
|
|
22 |
forwarded_for delete\n\
|
23 |
via off\n\
|
24 |
+
follow_x_forwarded_for deny all\n\
|
25 |
+
request_header_access X-Forwarded-For deny all\n\
|
26 |
+
request_header_access Via deny all\n\
|
27 |
+
visible_hostname squid-proxy-hf\n\
|
28 |
acl SSL_ports port 443\n\
|
29 |
acl Safe_ports port 80\n\
|
30 |
acl Safe_ports port 443\n\
|
31 |
acl CONNECT method CONNECT\n\
|
|
|
|
|
32 |
http_access allow all\n\
|
|
|
|
|
33 |
http_access deny !Safe_ports\n\
|
|
|
|
|
34 |
http_access deny CONNECT !SSL_ports\n\
|
|
|
|
|
35 |
http_access deny all\n\
|
36 |
+
access_log stdio:/dev/stdout\n\
|
37 |
+
cache_log stdio:/dev/stderr\n\
|
38 |
+
cache_store_log stdio:/dev/stdout\n\
|
|
|
|
|
|
|
|
|
39 |
refresh_pattern ^ftp: 1440 20% 10080\n\
|
40 |
refresh_pattern ^gopher: 1440 0% 1440\n\
|
41 |
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0\n\
|
42 |
refresh_pattern . 0 20% 4320\n\
|
43 |
+
pipeline_prefetch 1\n\
|
|
|
|
|
44 |
half_closed_clients off' > /etc/squid/squid.conf
|
45 |
|
46 |
# Set proper permissions for configuration
|
47 |
RUN chown root:proxy /etc/squid/squid.conf && \
|
48 |
chmod 644 /etc/squid/squid.conf
|
49 |
|
50 |
+
# Create cache directory with correct ownership and initialize it as proxy user
|
51 |
+
# This is a workaround for permission issues in HuggingFace Spaces
|
52 |
+
RUN sudo -u proxy squid -z
|
53 |
|
54 |
# Expose HTTP port
|
55 |
EXPOSE 7860
|
|
|
58 |
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
59 |
CMD squid -k check
|
60 |
|
61 |
+
USER proxy
|
62 |
+
|
63 |
# Start Squid proxy server
|
64 |
CMD ["squid", "-NYC"]
|
README.md
CHANGED
@@ -40,7 +40,6 @@ The proxy is configured with the following settings:
|
|
40 |
|
41 |
- Port: 7860
|
42 |
- Anonymity: High (removes Via, Forwarded-For, and other identifying headers)
|
43 |
-
- User-Agent: Spoofed to Chrome 91
|
44 |
- Access Control: Open to all IPs (0.0.0.0/0)
|
45 |
|
46 |
## Deployment on Hugging Face Spaces
|
|
|
40 |
|
41 |
- Port: 7860
|
42 |
- Anonymity: High (removes Via, Forwarded-For, and other identifying headers)
|
|
|
43 |
- Access Control: Open to all IPs (0.0.0.0/0)
|
44 |
|
45 |
## Deployment on Hugging Face Spaces
|